JVM标志是否有任何硬限制来控制转义分析?

时间:2018-03-21 09:34:37

标签: java jvm escape-analysis

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

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

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

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

1 个答案:

答案 0 :(得分:1)

  • 您提到的选项控制内联,而不是转义分析。
  • 这些值没有硬性限制,或者更确切地说,限制为INT_MAX
  • 但实际上,内联和其他优化受到其他限制的限制,例如NodeCountInliningCutoff(不可调),MaxNodeLimitNodeLimitFudgeFactor等。
  • 我怀疑你会在source code以外找到关于这些事情的大量文件。