Tomcat内存分配

我正在看我的tomcat使用jconsole,我试图了解为什么堆大小在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内存视图

 -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开始。 不过,我并没有在网页上find关于这个选项的很多文档,所以我不能确定。

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

这不是你的应用程序的行为,也不是你的configuration的任何问题(除了可能这个-XX:NewMemorySize,我不明白)。