jvm堆的内存储器分配
jvm堆的内存分配jvm 参数如下-Xms400m-Xmn300m-Xmx400m-XX:PermSize140M -XX:MaxPermSize140M-XX:+Print
jvm堆的内存分配
jvm 参数如下
-Xms400m-Xmn300m-Xmx400m-XX:PermSize=140M -XX:MaxPermSize=140M-XX:+PrintGCTimeStamps-XX:+PrintGCDetails-verbose:gc-Xloggc:gc.log-Djava.rmi.server.hostname=127.0.0.1-Dcom.sun.management.jmxremote.port=9880-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
启动myeclipse6.5,查看gc.log,只有一条gc信息:
2.253: [GC 2.253: [DefNew: 245760K->24701K(276480K), 0.0625636 secs] 245760K->24701K(378880K), 0.0626390 secs]
年轻代中内存区域分为Eden,Survivor1,Survivor2这三块,内存占用比例默认为8:1:1,由于新生代分配300m,所以Eden应该分配240M(245760K),Survivor1,Survivor2各为30M,通过jconsole查看各个区域所占内存与这此也相符
现再来分析gc原因,当DefNew(即为eden区,不知道为啥打印的日志名和jconsole上显示的名字不一样)内存达到245760K,正好为分配的240m,eden区内存已满开始回收,245760K->24701K,回收了245760K-24701K=215M,回收率还不错,还有25m左右没有回收。其中276480K经计算发现是eden+一个Survivor所占用内存,不知道何意?
245760K->24701K(378880K), 整个堆空间也就eden这一区进行了回收。