线上一个tomcat,启动参数如下:
-server -Xms5000m -Xmx5000m -XX:NewRatio=1 -XX:SurvivorRatio=2 -XX:PermSize=600m -XX:MaxPermSize=600m -XX:+UseCompressedOops -XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -Xloggc:$1_tomcat_server/logs/gc.log -XX:+TieredCompilation -XX:GCHeapFreeLimit=10 -XX:GCTimeLimit=90 -XX:+HeapDumpOnOutOfMemo ryError -XX:HeapDumpPath=/tmp/heap -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=90 -XX:MaxTenuringThreshold=15 -XX:+AlwaysPreTouch -XX:+PrintHeapAtGC -XX:+PrintTenuringDistribution
产生的问题就是,我设定了-Xms5000m 和-Xmx5000m ,那么heap加上Perm的总大小应该为5.6G左右,意思就是我们使用top查看这个进程的使用情况时,显示该进程使用的内存总共应该是5.6,但是现实情况是下面这样的:
比理论上总是要大哥900M左右,当我试着变化-Xms 和-Xmx的值后,再次启动,应用始终使用的内存大小比heap+perm大上900M,有没有谁知道这900M去哪里了
其次当我使用 Parallel GC的时候,应用内存的大小事等于heap+perm的
求助大家,谢过
内存占用=(-Xmx) + (-XX:MaxPermSize) + 线程数 * (-Xss) + 其它内存(NIO、socket缓冲区、JNI等)