请有人解释一下JVM选项ReservedCodeCacheSize
和InitialCodeCacheSize
是什么吗?具体来说,我什么时候/为什么要更改它?我该如何决定合适的尺码?
医生们是这么说的:
-XX:ReservedCodeCacheSize=32m保留的代码缓存大小(以字节为单位)-最大代码缓存大小。Solaris 64位、amd64和-server x86: 2048 m;在1.5.0_06和更早版本中,Solaris 64位和and64: 1024 m.
。
发布于 2011-09-22 19:22:29
ReservedCodeCacheSize
(和InitialCodeCacheSize
)是Java的编译器的一个选项。基本上,它为编译器的代码缓存设置最大大小。
缓存可能已满,这会产生如下警告:
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
,情况就更糟了。
什么时候设置这个选项?
当热点编译器发生故障时,
通常您不会更改此值。我认为默认值是相当好的平衡,因为这个问题只发生在非常罕见的场合(在我的经验中)。
发布于 2014-06-03 11:37:20
@jeha回答了我从这个问题中想知道的一切,除了设置参数到什么值之外。由于我没有编写我正在部署的代码,所以它的内存占用空间没有多少可见性。
但是,您可以使用j控制台将其附加到正在运行的java进程,然后使用“Memory”选项卡查找Cache大小。为了完整起见,步骤是(Linux环境,虽然我确信其他环境是相似的):
moments)
G 211
如您所见,我的代码缓存使用的是大约49 MB。此时,文档(和@jeha)说的缺省值仍然是48 MB。当然,这对我来说是个很大的动力,可以增加我的背景!
本。
在默认情况下,1024 MB可能做得太过了,但默认情况下48 MB似乎不足.
发布于 2016-09-15 15:36:43
从真正的工程团队获得良好的学习经验,以及他们在迁移到jdk 8时所面临的挑战。
http://engineering.indeedblog.com/blog/2016/09/job-search-web-app-java-8-migration/
结论: Jdk 8需要更多的代码缓存han 7。
JRE 8的默认代码缓存大小约为250 is,比JRE 7的48 is默认值大5倍。我们的经验是,JRE 8需要额外的代码缓存。到目前为止,我们已经将大约10种服务切换到了JRE 8,它们使用的编码比以前多了大约四倍。
https://stackoverflow.com/questions/7513185
复制相似问题