IBM JVM参数-Xcodecache的含义

时间:2013-08-02 19:52:35

标签: java parameters

我在其中一个Java应用程序启动命令行中看到以下参数(IBM JVM) -Xcodecache。

虽然直观地我明白这个参数控制代码模块的缓存大小,但我无法在任何文档中找到此参数的描述。

此外,此参数如何与使用不同设置完成的servlet缓存相关?感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

Take a look at this documentation.

看起来IBM codecache是​​存储从类生成的本机JIT编译代码的地方。 JVM将其存储在与其他资源不同的内存块中。

对于许多应用程序,一旦大多数方法被JIT编译,这个“codecache”内存将相当稳定。 The IBM JVM is smart about how it does this and tries to only use a litle bit more memory than it needs.但是,在JVM生命周期的早期,当方法仍在进行JIT编译时,或者当代码生成新类或使用反射时,将消耗此内存。当JVM确定它在当前分配的代码缓存中没有足够的空间时,它将分配一个新的块来增加大小。 -Xcodecache参数设置分配的这些新块的大小。

这是链接文档的相关段落:

  

JIT编译器智能地使用内存。当代码缓存是   初始化后,它消耗的内存相对较少。随着更多的方法   编译成本机代码,代码缓存动态增长   满足该计划的需要。以前占用的空间   丢弃或重新编译的方法被回收并重复使用。当大小   代码缓存达到预定义的上限,它停止增长。   JIT编译器将停止将来编译方法的所有尝试   避免耗尽系统内存并影响系统的稳定性   应用程序或操作系统。

文档说默认值是特定于体系结构的,这是有道理的,因为如果运行的是64位或32位系统,可能需要分配不同大小的块。当您想要调整此值时,就是在运行定期将新类加载到JVM中的应用程序时。在这种情况下,您可能希望增加该值,以便不太频繁地发生新分配。但是,您不应该将此设置得太高,因为您不希望分配比您将使用的内存更多的内存。文档建议

  

调整最佳尺寸的合理起点是   (totalNumberByteOfCompiledMethods * 1.1)。

答案 1 :(得分:0)

IBM docs读取,看起来你可以拥有多少JIT代码:

  

已编译的代码放在JVM进程空间的一部分中   称为代码缓存;代码中方法的位置   记录缓存,以便将来调用它将调用已编译的   代码。