【发布时间】:2011-08-05 23:14:19
【问题描述】:
默认情况下,HotSpot JIT 拒绝编译大于大约 8k 字节码的方法 (1)。有什么可以扫描罐子的方法(2)吗?
除非你通过
-XX:-DontCompileHugeMethodsJon Masamitsu 描述了解释方法如何减慢垃圾收集速度,并指出重构通常比
-XX:-DontCompileHugeMethods更明智
【问题讨论】:
-
我可以肯定地看到即将到来的 cmets 为什么你的代码不应该有这么大的方法。然而,我确信有有种合法的方式最终会出现如此大的方法(如自动生成的状态机代码等)。顺便说一句,为什么你的代码中有这么大的方法?
-
我们的一些代码已经存在了 40 年,并且拥有一百位或更多作者……不知道某些人的想法! (很明显,15 岁以上的 Java 最初是用其他语言编写的。)如果有超过 8k 限制的深黑色很少访问的角落,那么它们可以留下来。但是我想知道关键路径上是否有任何东西> 8k,如果它在未来潜入> 8k,如果我正在重构,我想知道我什么时候(足够远)低于8k。
-
可以使用javap、ASM等工具获取方法的字节长度