记录这个问题是因为看到CSDN上一个人问的一个问题:
为什么-Xmx的设置不管用,问题的内容大概是用top看进程资源的时候,VIRT列的内容为什么不符合自己设的值的预期(跟Xmx的值的关系)。
1. 关于VIRT这列的意义可以参考这篇文章:http://blog.csdn.net/kittaaron/article/details/9056825(其实直接看man的解释更好)。 另外有一篇从linux内核角度去分析VIRT, RES这几列的值的文章,供参考:http://yalung929.blog.163.com/blog/static/203898225201212981731971/
2. 关于Xmx(JAVA进程最大堆内存的值)的值意义不说了,很好奇启动一个JAVA进程默认的值是多少,网上搜到一些答案有的说是64M,128M之类的,觉得应该不对(可能以前的某些JDK的版本是),我在自己的一个环境上查看TOMCAT进程(没有设置Xmx的值)占用内存超过1G,于是想Xmx的值到底是怎样定义的,终于在stackoverflow上找到一个说明,用
java -XX:+PrintFlagsFinal 可以查看到JVM启动时默认的一些参数。
原文:http://stackoverflow.com/questions/8209450/default-values-for-xmx-xms-maxpermsize-on-non-server-class-machines
我的java版本是1.6.0.45,看到的MaxHeapSize值是4G