首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ReservedCodeCacheSize和InitialCodeCacheSize是什么?

ReservedCodeCacheSize和InitialCodeCacheSize是什么?
EN

Stack Overflow用户
提问于 2011-09-22 10:17:27
回答 4查看 109.6K关注 0票数 94

请有人解释一下JVM选项ReservedCodeCacheSizeInitialCodeCacheSize是什么吗?具体来说,我什么时候/为什么要更改它?我该如何决定合适的尺码?

医生们是这么说的:

-XX:ReservedCodeCacheSize=32m保留的代码缓存大小(以字节为单位)-最大代码缓存大小。Solaris 64位、amd64和-server x86: 2048 m;在1.5.0_06和更早版本中,Solaris 64位和and64: 1024 m.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-22 19:22:29

ReservedCodeCacheSize (和InitialCodeCacheSize)是Java的编译器的一个选项。基本上,它为编译器的代码缓存设置最大大小。

缓存可能已满,这会产生如下警告:

代码语言:javascript
运行
复制
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,情况就更糟了。

什么时候设置这个选项?

当热点编译器发生故障时,

  1. ,以减少JVM所需的内存(从而冒JIT编译器故障的风险)

通常您不会更改此值。我认为默认值是相当好的平衡,因为这个问题只发生在非常罕见的场合(在我的经验中)。

票数 79
EN

Stack Overflow用户

发布于 2014-06-03 11:37:20

@jeha回答了我从这个问题中想知道的一切,除了设置参数到什么值之外。由于我没有编写我正在部署的代码,所以它的内存占用空间没有多少可见性。

但是,您可以使用j控制台将其附加到正在运行的java进程,然后使用“Memory”选项卡查找Cache大小。为了完整起见,步骤是(Linux环境,虽然我确信其他环境是相似的):

moments)

  • Navigate
  1. 在您的机器
  2. 上找到正确的进程ID并将j控制台附加到它(这将从“图表:”下拉列表中的“内存”选项卡
  3. 中获取几个jconsole,再次选择“内存池”“代码缓存”
  4. ,这可能需要一些时间才能刷新屏幕,然后您将看到如下内容:

G 211

如您所见,我的代码缓存使用的是大约49 MB。此时,文档(和@jeha)说的缺省值仍然是48 MB。当然,这对我来说是个很大的动力,可以增加我的背景!

本。

在默认情况下,1024 MB可能做得太过了,但默认情况下48 MB似乎不足.

票数 14
EN

Stack Overflow用户

发布于 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,它们使用的编码比以前多了大约四倍。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7513185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档