Tomcat 内存分配

Tomcat 内存分配

我正在使用 jconsole 查看我的 tomcat,并试图了解为什么堆大小在 0.4GB 和 1GB 之间变化。

我以为我告诉过它从~1GB 开始并且使用不超过~6GB。

谁能解释一下发生了什么事。

我的命令行有以下内存和 GC 选项:java -XX:NewSize=700m -XX:MaxNewSize=700m -Xms1202m -Xmx6014m -XX:MaxPermSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=20 -XX:ParallelGCThreads=4

jconsole 内存视图

答案1

-Xmsn Specify the initial size, in bytes, of the memory allocation pool

您已告诉它从 1GB 开始。

-Xmxn Specify the maximum size, in bytes, of the memory allocation pool.

您已告诉它最多使用 6GB。

我没有发现您所看到的内容和屏幕截图描述的行为之间有任何矛盾。-XX:MaxNewSize 将强制 JVM 从 700Mo 开始。但是,我在互联网上找不到太多关于此选项的文档,所以我不能确定。

然后,您的应用程序运行,分配对象,有时,垃圾收集器会继续工作,释放内存。您只是没有达到您在开始时指定的限制值(当然是因为您的应用程序当前不需要它)。您需要的最小内存约为 370Mo。

您的配置没有任何问题(也许除了这个我无法理解的 -XX:NewMemorySize),您的应用程序的行为也没有问题。

相关内容