0

我最近一直在尝试了解 JVM 逃逸分析。根据这个不错的答案,我尝试了很多 JVM 选项的组合。我的问题是,这些选项值是否有任何硬性限制?像FreqInlineSizeMaxInlineLevel。当我将选项设置为一些荒谬的值时,JVM 不会认真对待它, -XX:FreqInlineSize=65535会这样吗?事实上,我试过了。但是jvm并没有抱怨。所以我真的说不出来。

如果有一些硬性限制,那会是什么?我在哪里可以找到描述这些事情的文件?


我一直在尝试找到一种方法来强制将我的 Protobuf 消息和构建器对象分配到堆栈而不是堆上。有时它会起作用。但是当消息对象的字段数量增加时,它就停止了工作。我在互联网上搜索了很多,但由于我对这个主题的了解有限,我几乎没有发现任何结果。所以这就是我问的原因。


JVM 版本:Java HotSpot(TM) 64 位服务器 VM(内部版本 25.131-b11,混合模式)

4

1 回答 1

1
  • 您提到的选项控制内联,而不是转义分析。
  • 这些值没有硬性限制,或者更准确地说,限制是INT_MAX
  • 然而,在实践中,内联和其他优化受到其他限制的限制,例如NodeCountInliningCutoff(不可调整)MaxNodeLimitNodeLimitFudgeFactor
  • 我怀疑您会在源代码之外找到很多关于这些东西的文档。
于 2018-03-21T22:42:58.230 回答