Rag*_*ghu 82 java jvm jvm-hotspot
有人能说明一下JVM选项是什么ReservedCodeCacheSize
和InitialCodeCacheSize
是谁?特别是何时/为什么我要改变它?我如何确定合适的尺寸?
这就是文档所说的:
-XX:ReservedCodeCacheSize = 32m保留代码高速缓存大小(以字节为单位) - 最大代码高速缓存大小.[Solaris 64位,amd64和-server x86:2048m; 在1.5.0_06及更早版本中,Solaris 64位和64:1024m.
jeh*_*eha 72
ReservedCodeCacheSize
(和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
Run Code Online (Sandbox Code Playgroud)
接下来会更糟糕的是Java HotSpot(TM) Client VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGINT to handler- the VM may need to be forcibly terminated
.
何时设置此选项?
通常你不会改变这个值.我认为默认值非常平衡,因为这个问题只在极少数情况下发生(在我的经验中).
Ani*_*451 12
@jeha回答了我想从这个问题中知道的一切,除了设置参数的值.因为我没有编写我正在部署的代码,所以我对它的内存占用空间没有多少可见性.
但是,您可以使用jconsole附加到正在运行的java进程,然后使用"Memory"选项卡查找代码缓存大小.为了完整起见,步骤是(Linux VM环境,虽然我确定其他环境类似):
同样,屏幕刷新可能需要一些时间,然后你会看到类似的东西:
如您所见,我的代码缓存使用大约49 MB.此时我仍然有文档(和@jeha)所说的默认值为48 MB.当然这是我增加设置的一个很好的动力!
本.
默认情况下1024 MB可能是过度的,但默认情况下48 MB似乎没有...
归档时间: |
|
查看次数: |
80518 次 |
最近记录: |