64位Linux上的JVM配置

问题描述:

我有一个运行在具有4Gb RAM的64位Ubuntu服务器上的服务器应用程序。 当我设置JVM(我们使用Sun JVM 1.6)这样的配置参数时:-Xms1024m -Xmx2560m,当启动应用程序时(它运行在Tomcat 6上),我看到一个奇怪的内存分配。 Ubuntu的“top”命令显示虚拟内存大小几乎为3.2Gb。我不明白Ubuntu是否分配了我在启动JVM时要求的内存,或者Ubuntu可能会将-Xmx值添加到部分交换中,从而获得这么大的尺寸。 如果我在32位Ubuntu服务器上运行并配置-Xmx1536m,那么运行“top”命令时会看到1721m。任何人都可以向我解释什么是三角洲,何时来自? 我有其他进程在这些实例上运行,我想了解什么内存配置我应该为他们考虑到Ubuntu的“顶部”命令的结果。64位Linux上的JVM配置

在此先感谢,亚历克斯

你尝试喜欢Yourkit一个探查?

+0

不,我没有试过轮廓仪。 – Alex 2010-07-04 06:24:46

JVM将使用一定量的额外内存用于内部处理的目的 - 这link可以帮助:

还要注意的是常驻生成上涨到老一代结束。还有一个用于内部JVM内存管理的小型代码缓存50Mb。这意味着总堆初始堆大小= -Xms + -XX:PermSize +〜50Mb,并且最大总堆大小= -Xmx + -XX:+ MaxPermSize +〜50Mb。例如,如果-Xms/-Xmx设置为512m,并且-XX:PermSize/MaxPermSize设置为128m,则总VM实际上大约为700 Mb。