控制逃逸分析的 JVM 标志是否有任何硬性限制?
Is there any hard limit on the JVM flags to control escape analysis?
我最近一直在尝试了解JVM 逃逸分析。根据 ,我尝试了很多 JVM 选项的组合。我的问题是这些期权价值是否有硬性限制?喜欢 FreqInlineSize
、MaxInlineLevel
。当我将选项设置为一些荒谬的值时,JVM 不会认真对待它,比如 -XX:FreqInlineSize=65535
会吗?事实上,我试过了。但是 jvm 并没有抱怨它。所以我真的说不准。
如果有一些硬性限制,那会是什么?我在哪里可以找到描述这些东西的文件?
我一直在努力寻找一种方法来强制将我的 Protobuf 消息和构建器对象分配到堆栈而不是堆上。有时它有效。但是当消息对象的字段数量增加时,它就停止工作了。我在互联网上搜索了很多,但由于我对这个问题的了解有限,所以搜索结果很少。所以这就是我问的原因。
JVM 版本:
Java HotSpot(TM) 64 位服务器 VM(内部版本 25.131-b11,混合模式)
- 你提到的选项控制内联,而不是逃逸分析。
- 这些值没有硬性限制,或者更准确地说,限制是
INT_MAX
。
- 然而,在实践中,内联和其他优化受到其他限制的限制,例如
NodeCountInliningCutoff
(不可调整)、MaxNodeLimit
、NodeLimitFudgeFactor
等
- 除了 source code.
之外,我怀疑您会找到很多关于这些内容的文档
我最近一直在尝试了解JVM 逃逸分析。根据 FreqInlineSize
、MaxInlineLevel
。当我将选项设置为一些荒谬的值时,JVM 不会认真对待它,比如 -XX:FreqInlineSize=65535
会吗?事实上,我试过了。但是 jvm 并没有抱怨它。所以我真的说不准。
如果有一些硬性限制,那会是什么?我在哪里可以找到描述这些东西的文件?
我一直在努力寻找一种方法来强制将我的 Protobuf 消息和构建器对象分配到堆栈而不是堆上。有时它有效。但是当消息对象的字段数量增加时,它就停止工作了。我在互联网上搜索了很多,但由于我对这个问题的了解有限,所以搜索结果很少。所以这就是我问的原因。
JVM 版本: Java HotSpot(TM) 64 位服务器 VM(内部版本 25.131-b11,混合模式)
- 你提到的选项控制内联,而不是逃逸分析。
- 这些值没有硬性限制,或者更准确地说,限制是
INT_MAX
。 - 然而,在实践中,内联和其他优化受到其他限制的限制,例如
NodeCountInliningCutoff
(不可调整)、MaxNodeLimit
、NodeLimitFudgeFactor
等 - 除了 source code. 之外,我怀疑您会找到很多关于这些内容的文档