有人可以解释一下 JVM 选项吗ReservedCodeCacheSize
and InitialCodeCacheSize
是?具体来说我什么时候/为什么要改变它?我如何确定合适的尺寸?
这就是文档所说的:
-XX:ReservedCodeCacheSize=32m 保留代码缓存大小(以字节为单位)- 最大代码缓存大小。 [Solaris 64 位、amd64 和 -server x86:2048m;在 1.5.0_06 及更早版本中,Solaris 64 位和 and64:1024m。]
ReservedCodeCacheSize
(and InitialCodeCacheSize
)是 Java Hotspot VM 的(即时)编译器的一个选项。基本上它设置了编译器代码缓存的最大大小。
缓存可能已满,这会导致如下警告:
Java HotSpot(TM) 64-Bit Server VM warning: CodeCache is full. Compiler has been disabled.
Java HotSpot(TM) 64-Bit Server VM warning: Try increasing the code cache size using -XX:ReservedCodeCacheSize=
Code Cache [0x000000010958f000, 0x000000010c52f000, 0x000000010c58f000)
total_blobs=15406 nmethods=14989 adapters=362 free_code_cache=835Kb largest_free_block=449792
紧随其后时情况会更糟Java HotSpot(TM) Client VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated
.
什么时候设置这个选项?
- 当 Hotspot 编译器失败时
- 减少 JVM 所需的内存(因此存在 JIT 编译器失败的风险)
通常您不会更改此值。我认为默认值非常平衡,因为这个问题仅在极少数情况下发生(根据我的经验)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)