关于Java Web应用程序的内存使用问题,我有一个疑问。
在任务管理器中,Tomcat服务似乎占用了8,677,544,000字节的内存。
在jvisualvm中,部署在Tomcat下的Java应用程序内存使用情况如下:
Heap:
Used: 2,304,233,184 B
Size: 8,589,934,592 B
Max: 10,737,418,240 B
Permgen:
Used: 80,272,056 B
Size: 536,870,912 B
Max: 536,870,912 B
Tomcat的Service.bat文件中的内存参数:
-Xms8192m;-Xmx10240m;-XX:PermSize=512m;-XX:MaxPermSize=512m
现在,我的问题是无论我设置MaxHeapFreeRatio为多少,空闲空间都不会收缩,尽管使用空间有时候会减少。
有没有人能够友善地告诉我为什么会出现这种情况..是否有方法可以缩小空闲空间,以便系统上运行的其他进程可以利用它?
我正在使用最新版本的JDK 1.7和Tomcat 7。
-Xmx
),它通常不会将内存释放回操作系统。相反,只需尽量不要分配超过应用程序所需的内存 - 在您的情况下,您分配了比必要多6-8 GiB的内存,这些内存可以被其他进程使用。 - Michael