我有多台运行CentOS 5.4的服务器,只有一台应用程序在
Java VM上运行.我已使用以下参数配置Java VM:
java -Xmx4500M -server -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:NewSize=1024m -Djava.net.preferIPv4Stack=true -Dcom.sun.management.jmxremote=true
我运行VM的机器有6 GB RAM,没有运行其他应用程序.过了一会儿,java进程开始真的很难打到交换空间,我从top命令中得到这个信息:
7658 root 25 0 11.7g 3.9g 4796 S 39.4 67.3 543:54.17 java
另一方面,如果我通过JConsole连接,它会报告Java VM使用2.6 GB,提交4.6 GB和最大4.6 Gb.
java -version返回:
java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01,mixed mode)
为什么Java VM在分配的堆大小之后扩展了这么多?如果在JConsole中没有报告,那么内存在哪里?