控制逃逸分析的 JVM 标志是否有任何硬性限制?

Is there any hard limit on the JVM flags to control escape analysis?

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

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


我一直在努力寻找一种方法来强制将我的 Protobuf 消息和构建器对象分配到堆栈而不是堆上。有时它有效。但是当消息对象的字段数量增加时,它就停止工作了。我在互联网上搜索了很多,但由于我对这个问题的了解有限,所以搜索结果很少。所以这就是我问的原因。


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

  • 你提到的选项控制内联,而不是逃逸分析。
  • 这些值没有硬性限制,或者更准确地说,限制是 INT_MAX
  • 然而,在实践中,内联和其他优化受到其他限制的限制,例如 NodeCountInliningCutoff(不可调整)、MaxNodeLimitNodeLimitFudgeFactor
  • 除了 source code.
  • 之外,我怀疑您会找到很多关于这些内容的文档