Java IBM JVM参数-Xcodecache的含义

Java IBM JVM参数-Xcodecache的含义,java,parameters,Java,Parameters,我在Java应用程序启动命令行中看到以下参数(IBM JVM) -Xcodecache 虽然直觉上我知道这个参数控制代码模块的缓存大小,但我在任何文档中都找不到这个参数的描述 此外,此参数与使用不同设置完成的servlet缓存有何关系?谢谢您的帮助 从中读取您可以拥有多少JIT代码: 编译后的代码被放入JVM进程空间的一部分 调用代码缓存;方法在代码中的位置 缓存被记录,以便将来对它的调用将调用已编译的缓存 代码 IBM codecache似乎存储了从类生成的本机JIT编译代码。JVM将其存储

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

虽然直觉上我知道这个参数控制代码模块的缓存大小,但我在任何文档中都找不到这个参数的描述

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

从中读取您可以拥有多少JIT代码:

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

IBM codecache似乎存储了从类生成的本机JIT编译代码。JVM将其存储在与其其他资源不同的内存块中

对于许多应用程序来说,一旦大多数方法都经过JIT编译,这种“codecache”内存将相当稳定。然而,在JVM生命周期的早期,当方法仍在JIT编译时,或者当代码生成新类或使用反射时,这些内存将被消耗。当JVM确定当前分配的codecache中没有足够的空间时,它将分配一个新块以增加大小。
-Xcodecache
参数设置分配的这些新块的大小

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

JIT编译器智能地使用内存。当代码缓存 初始化后,它消耗的内存相对较少。因为有更多的方法 编译成本机代码后,代码缓存将动态增长到 适应计划的需要。以前被占用的空间 废弃或重新编译的方法被回收和重用。当尺寸 如果代码缓存的数量达到预定义的上限,它将停止增长。 JIT编译器将停止以后编译方法的所有尝试,以 避免耗尽系统内存并影响系统的稳定性 应用程序或操作系统

文档中说默认值是特定于体系结构的,这是有意义的,因为如果您运行的是64位或32位系统,您可能需要分配不同大小的块。当您运行一个定期将新类加载到JVM中的应用程序时,您需要调整此值。在这种情况下,您可能希望增加该值,以便减少新分配的频率。不过,您不应该将其设置得太高,因为您不希望分配的内存比您将使用的内存多得多。文件表明:

调整最佳尺寸的合理起点是 (编译方法的总字节数*1.1)


看起来第二个链接是关于Sun JVM的。