JVM内存管理和垃圾回收(二)
2016-04-11 10:10
537 查看
笔者在开发Java程序的时候,JVM经常会发生java.lang.OutOfMemoryErr Perm Space 错误,为了找出内存溢出的原因,进行下列步骤:
1、配置GC日志打印到文件:
-XX:+PrintGCDetails 输出GC的详细日志信息
-Xloggc:D:/gc/jdk7-gc.log 将GC日志输出到制定的目录
笔者所在公司tomat服务器,发生full gc的频率非常之高,如下:(tomcat的jvm参数采用的是默认配置)
306912.064: [Full GC [PSYoungGen: 384K->0K(1354240K)] [ParOldGen: 41311K->40941K(169984K)] 41695K->40941K(1524224K) [PSPermGen: 66086K->66083K(66560K)], 0.1190530 secs] [Times: user=0.25 sys=0.00, real=0.12 secs]
310512.184: [GC [PSYoungGen: 221242K->800K(1354240K)] 262183K->41741K(1524224K), 0.0065370 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
310512.191: [Full GC [PSYoungGen: 800K->0K(1354240K)] [ParOldGen: 40941K->41342K(169984K)] 41741K->41342K(1524224K) [PSPermGen: 66133K->66130K(66560K)], 0.1909940 secs] [Times: user=0.44 sys=0.00, real=0.19 secs]
314112.383: [GC [PSYoungGen: 71801K->64K(1354240K)] 113144K->41406K(1524224K), 0.0043340 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
314112.388: [Full GC [PSYoungGen: 64K->0K(1354240K)] [ParOldGen: 41342K->40981K(169984K)] 41406K->40981K(1524224K) [PSPermGen: 66130K->66059K(66560K)], 0.0981300 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
317712.487: [GC [PSYoungGen: 68808K->64K(1353216K)] 109789K->41045K(1523200K), 0.0050380 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
317712.492: [Full GC [PSYoungGen: 64K->0K(1353216K)] [ParOldGen: 40981K->40981K(169984K)] 41045K->40981K(1523200K) [PSPermGen: 66059K->66059K(66560K)], 0.1080740 secs] [Times: user=0.20 sys=0.00, real=0.11 secs]
321312.601: [GC [PSYoungGen: 74684K->64K(1353728K)] 115666K->41045K(1523712K), 0.0047520 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
321312.606: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 40981K->40982K(169984K)] 41045K->40982K(1523712K) [PSPermGen: 66059K->66059K(66560K)], 0.1003630 secs] [Times: user=0.22 sys=0.00, real=0.11 secs]
324912.708: [GC [PSYoungGen: 298849K->2016K(1353216K)] 339831K->43234K(1523200K), 0.0087430 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
324912.716: [Full GC [PSYoungGen: 2016K->0K(1353216K)] [ParOldGen: 41218K->42876K(169984K)] 43234K->42876K(1523200K) [PSPermGen: 66132K->66132K(66560K)], 0.2109150 secs] [Times: user=0.46 sys=0.00, real=0.21 secs]
328512.929: [GC [PSYoungGen: 441228K->1280K(1353728K)] 484104K->44156K(1523712K), 0.0053650 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
328512.934: [Full GC [PSYoungGen: 1280K->0K(1353728K)] [ParOldGen: 42876K->42906K(169984K)] 44156K->42906K(1523712K) [PSPermGen: 66137K->66101K(66560K)], 0.1187700 secs] [Times: user=0.31 sys=0.00, real=0.12 secs]
332113.054: [GC [PSYoungGen: 115849K->544K(1354240K)] 158756K->43450K(1524224K), 0.0063400 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
332113.060: [Full GC [PSYoungGen: 544K->0K(1354240K)] [ParOldGen: 42906K->42355K(169984K)] 43450K->42355K(1524224K) [PSPermGen: 66125K->66122K(66560K)], 0.1304340 secs] [Times: user=0.32 sys=0.00, real=0.13 secs]
335713.192: [GC [PSYoungGen: 218014K->737K(1354240K)] 260369K->43092K(1524224K), 0.0060600 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
335713.198: [Full GC [PSYoungGen: 737K->0K(1354240K)] [ParOldGen: 42355K->42159K(169984K)] 43092K->42159K(1524224K) [PSPermGen: 66131K->66110K(66560K)], 0.1496760 secs] [Times: user=0.33 sys=0.00, real=0.15 secs]
339313.349: [GC [PSYoungGen: 195441K->640K(1354240K)] 237601K->42807K(1524224K), 0.0064040 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
339313.355: [Full GC [PSYoungGen: 640K->0K(1354240K)] [ParOldGen: 42167K->41642K(169984K)] 42807K->41642K(1524224K) [PSPermGen: 66113K->66111K(66560K)], 0.1170200 secs] [Times: user=0.22 sys=0.00, real=0.12 secs]
342913.474: [GC [PSYoungGen: 68635K->64K(1352192K)] 110277K->41706K(1522176K), 0.0047340 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
342913.478: [Full GC [PSYoungGen: 64K->0K(1352192K)] [ParOldGen: 41642K->41153K(169984K)] 41706K->41153K(1522176K) [PSPermGen: 6
4000
6111K->66078K(66560K)], 0.1212120 secs] [Times: user=0.32 sys=0.00, real=0.12 secs]
346513.601: [GC [PSYoungGen: 70992K->32K(1353728K)] 112145K->41185K(1523712K), 0.0049080 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
346513.606: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41185K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0987060 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
350113.706: [GC [PSYoungGen: 69236K->32K(1353728K)] 110390K->41185K(1523712K), 0.0042550 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
350113.710: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41185K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0934600 secs] [Times: user=0.23 sys=0.00, real=0.09 secs]
353713.805: [GC [PSYoungGen: 65346K->64K(1353728K)] 106500K->41217K(1523712K), 0.0047140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
353713.810: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.1104470 secs] [Times: user=0.22 sys=0.00, real=0.11 secs]
357314.505: [GC [PSYoungGen: 71231K->64K(1353728K)] 112385K->41217K(1523712K), 0.0043240 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
357314.510: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0975940 secs] [Times: user=0.20 sys=0.00, real=0.10 secs]
360914.608: [GC [PSYoungGen: 72851K->64K(1353728K)] 114004K->41217K(1523712K), 0.0045000 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
360914.613: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0941940 secs] [Times: user=0.23 sys=0.00, real=0.09 secs]
364514.708: [GC [PSYoungGen: 71335K->64K(1353728K)] 112489K->41217K(1523712K), 0.0048460 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
364514.713: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41128K(169984K)] 41217K->41128K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0927900 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
368114.807: [GC [PSYoungGen: 69867K->32K(1353728K)] 110996K->41160K(1523712K), 0.0046640 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
368114.812: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41128K->41070K(169984K)] 41160K->41070K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0963820 secs] [Times: user=0.21 sys=0.00, real=0.10 secs]
371714.909: [GC [PSYoungGen: 76002K->32K(1352192K)] 117073K->41102K(1522176K), 0.0047040 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
371714.914: [Full GC [PSYoungGen: 32K->0K(1352192K)] [ParOldGen: 41070K->41070K(169984K)] 41102K->41070K(1522176K) [PSPermGen: 66078K->66078K(66560K)], 0.0944860 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
375315.010: [GC [PSYoungGen: 67948K->32K(1353216K)] 109018K->41102K(1523200K), 0.0047050 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
375315.015: [Full GC [PSYoungGen: 32K->0K(1353216K)] [ParOldGen: 41070K->41069K(169984K)] 41102K->41069K(1523200K) [PSPermGen: 66078K->66078K(66560K)], 0.0936430 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
378915.109: [GC [PSYoungGen: 66544K->96K(1353216K)] 107614K->41165K(1523200K), 0.0043470 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
378915.114: [Full GC [PSYoungGen: 96K->0K(1353216K)] [ParOldGen: 41069K->41069K(169984K)] 41165K->41069K(1523200K) [PSPermGen: 66078K->66078K(66560K)], 0.0906580 secs] [Times: user=0.22 sys=0.00, real=0.09 secs]
382515.206: [GC [PSYoungGen: 71012K->96K(1353216K)] 112082K->41165K(1523200K), 0.0046320 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
382515.211: [Full GC [PSYoungGen: 96K->0K(1353216K)] [ParOldGen: 41069K->41070K(169984K)] 41165K->41070K(1523200K) [PSPermGen: 66080K->66080K(66560K)], 0.1020770 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
很明显,PSPermGen永久代的问题,每次PSPermGen区域发生full gc后内存几乎无变化,明显就是PSPermGen内存块太小导致的,在catalina.sh添加jvm参数:
JAVA_OPTS="-XX:+PrintGCDetails -Xloggc:/data/gc/portal/jdk7-gc.log -Xmn1024m -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=512m"
问题解决。
1、配置GC日志打印到文件:
-XX:+PrintGCDetails 输出GC的详细日志信息
-Xloggc:D:/gc/jdk7-gc.log 将GC日志输出到制定的目录
笔者所在公司tomat服务器,发生full gc的频率非常之高,如下:(tomcat的jvm参数采用的是默认配置)
306912.064: [Full GC [PSYoungGen: 384K->0K(1354240K)] [ParOldGen: 41311K->40941K(169984K)] 41695K->40941K(1524224K) [PSPermGen: 66086K->66083K(66560K)], 0.1190530 secs] [Times: user=0.25 sys=0.00, real=0.12 secs]
310512.184: [GC [PSYoungGen: 221242K->800K(1354240K)] 262183K->41741K(1524224K), 0.0065370 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
310512.191: [Full GC [PSYoungGen: 800K->0K(1354240K)] [ParOldGen: 40941K->41342K(169984K)] 41741K->41342K(1524224K) [PSPermGen: 66133K->66130K(66560K)], 0.1909940 secs] [Times: user=0.44 sys=0.00, real=0.19 secs]
314112.383: [GC [PSYoungGen: 71801K->64K(1354240K)] 113144K->41406K(1524224K), 0.0043340 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
314112.388: [Full GC [PSYoungGen: 64K->0K(1354240K)] [ParOldGen: 41342K->40981K(169984K)] 41406K->40981K(1524224K) [PSPermGen: 66130K->66059K(66560K)], 0.0981300 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
317712.487: [GC [PSYoungGen: 68808K->64K(1353216K)] 109789K->41045K(1523200K), 0.0050380 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
317712.492: [Full GC [PSYoungGen: 64K->0K(1353216K)] [ParOldGen: 40981K->40981K(169984K)] 41045K->40981K(1523200K) [PSPermGen: 66059K->66059K(66560K)], 0.1080740 secs] [Times: user=0.20 sys=0.00, real=0.11 secs]
321312.601: [GC [PSYoungGen: 74684K->64K(1353728K)] 115666K->41045K(1523712K), 0.0047520 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
321312.606: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 40981K->40982K(169984K)] 41045K->40982K(1523712K) [PSPermGen: 66059K->66059K(66560K)], 0.1003630 secs] [Times: user=0.22 sys=0.00, real=0.11 secs]
324912.708: [GC [PSYoungGen: 298849K->2016K(1353216K)] 339831K->43234K(1523200K), 0.0087430 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
324912.716: [Full GC [PSYoungGen: 2016K->0K(1353216K)] [ParOldGen: 41218K->42876K(169984K)] 43234K->42876K(1523200K) [PSPermGen: 66132K->66132K(66560K)], 0.2109150 secs] [Times: user=0.46 sys=0.00, real=0.21 secs]
328512.929: [GC [PSYoungGen: 441228K->1280K(1353728K)] 484104K->44156K(1523712K), 0.0053650 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
328512.934: [Full GC [PSYoungGen: 1280K->0K(1353728K)] [ParOldGen: 42876K->42906K(169984K)] 44156K->42906K(1523712K) [PSPermGen: 66137K->66101K(66560K)], 0.1187700 secs] [Times: user=0.31 sys=0.00, real=0.12 secs]
332113.054: [GC [PSYoungGen: 115849K->544K(1354240K)] 158756K->43450K(1524224K), 0.0063400 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
332113.060: [Full GC [PSYoungGen: 544K->0K(1354240K)] [ParOldGen: 42906K->42355K(169984K)] 43450K->42355K(1524224K) [PSPermGen: 66125K->66122K(66560K)], 0.1304340 secs] [Times: user=0.32 sys=0.00, real=0.13 secs]
335713.192: [GC [PSYoungGen: 218014K->737K(1354240K)] 260369K->43092K(1524224K), 0.0060600 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
335713.198: [Full GC [PSYoungGen: 737K->0K(1354240K)] [ParOldGen: 42355K->42159K(169984K)] 43092K->42159K(1524224K) [PSPermGen: 66131K->66110K(66560K)], 0.1496760 secs] [Times: user=0.33 sys=0.00, real=0.15 secs]
339313.349: [GC [PSYoungGen: 195441K->640K(1354240K)] 237601K->42807K(1524224K), 0.0064040 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
339313.355: [Full GC [PSYoungGen: 640K->0K(1354240K)] [ParOldGen: 42167K->41642K(169984K)] 42807K->41642K(1524224K) [PSPermGen: 66113K->66111K(66560K)], 0.1170200 secs] [Times: user=0.22 sys=0.00, real=0.12 secs]
342913.474: [GC [PSYoungGen: 68635K->64K(1352192K)] 110277K->41706K(1522176K), 0.0047340 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
342913.478: [Full GC [PSYoungGen: 64K->0K(1352192K)] [ParOldGen: 41642K->41153K(169984K)] 41706K->41153K(1522176K) [PSPermGen: 6
4000
6111K->66078K(66560K)], 0.1212120 secs] [Times: user=0.32 sys=0.00, real=0.12 secs]
346513.601: [GC [PSYoungGen: 70992K->32K(1353728K)] 112145K->41185K(1523712K), 0.0049080 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
346513.606: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41185K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0987060 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
350113.706: [GC [PSYoungGen: 69236K->32K(1353728K)] 110390K->41185K(1523712K), 0.0042550 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
350113.710: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41185K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0934600 secs] [Times: user=0.23 sys=0.00, real=0.09 secs]
353713.805: [GC [PSYoungGen: 65346K->64K(1353728K)] 106500K->41217K(1523712K), 0.0047140 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
353713.810: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.1104470 secs] [Times: user=0.22 sys=0.00, real=0.11 secs]
357314.505: [GC [PSYoungGen: 71231K->64K(1353728K)] 112385K->41217K(1523712K), 0.0043240 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
357314.510: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0975940 secs] [Times: user=0.20 sys=0.00, real=0.10 secs]
360914.608: [GC [PSYoungGen: 72851K->64K(1353728K)] 114004K->41217K(1523712K), 0.0045000 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
360914.613: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41153K(169984K)] 41217K->41153K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0941940 secs] [Times: user=0.23 sys=0.00, real=0.09 secs]
364514.708: [GC [PSYoungGen: 71335K->64K(1353728K)] 112489K->41217K(1523712K), 0.0048460 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
364514.713: [Full GC [PSYoungGen: 64K->0K(1353728K)] [ParOldGen: 41153K->41128K(169984K)] 41217K->41128K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0927900 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
368114.807: [GC [PSYoungGen: 69867K->32K(1353728K)] 110996K->41160K(1523712K), 0.0046640 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
368114.812: [Full GC [PSYoungGen: 32K->0K(1353728K)] [ParOldGen: 41128K->41070K(169984K)] 41160K->41070K(1523712K) [PSPermGen: 66078K->66078K(66560K)], 0.0963820 secs] [Times: user=0.21 sys=0.00, real=0.10 secs]
371714.909: [GC [PSYoungGen: 76002K->32K(1352192K)] 117073K->41102K(1522176K), 0.0047040 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]
371714.914: [Full GC [PSYoungGen: 32K->0K(1352192K)] [ParOldGen: 41070K->41070K(169984K)] 41102K->41070K(1522176K) [PSPermGen: 66078K->66078K(66560K)], 0.0944860 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
375315.010: [GC [PSYoungGen: 67948K->32K(1353216K)] 109018K->41102K(1523200K), 0.0047050 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
375315.015: [Full GC [PSYoungGen: 32K->0K(1353216K)] [ParOldGen: 41070K->41069K(169984K)] 41102K->41069K(1523200K) [PSPermGen: 66078K->66078K(66560K)], 0.0936430 secs] [Times: user=0.21 sys=0.00, real=0.09 secs]
378915.109: [GC [PSYoungGen: 66544K->96K(1353216K)] 107614K->41165K(1523200K), 0.0043470 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
378915.114: [Full GC [PSYoungGen: 96K->0K(1353216K)] [ParOldGen: 41069K->41069K(169984K)] 41165K->41069K(1523200K) [PSPermGen: 66078K->66078K(66560K)], 0.0906580 secs] [Times: user=0.22 sys=0.00, real=0.09 secs]
382515.206: [GC [PSYoungGen: 71012K->96K(1353216K)] 112082K->41165K(1523200K), 0.0046320 secs] [Times: user=0.01 sys=0.00, real=0.00 secs]
382515.211: [Full GC [PSYoungGen: 96K->0K(1353216K)] [ParOldGen: 41069K->41070K(169984K)] 41165K->41070K(1523200K) [PSPermGen: 66080K->66080K(66560K)], 0.1020770 secs] [Times: user=0.22 sys=0.00, real=0.10 secs]
很明显,PSPermGen永久代的问题,每次PSPermGen区域发生full gc后内存几乎无变化,明显就是PSPermGen内存块太小导致的,在catalina.sh添加jvm参数:
JAVA_OPTS="-XX:+PrintGCDetails -Xloggc:/data/gc/portal/jdk7-gc.log -Xmn1024m -Xms4096m -Xmx4096m -XX:PermSize=512m -XX:MaxPermSize=512m"
问题解决。
相关文章推荐
- iOS开发中常用的各种动画、页面切面效果
- http 301、304状态码
- Ruby-ActiveRecord(pluck,find_each,transactive,after_commit,touch,changes,connection_pool,arel_table)
- MyBatis Generator中文文档
- Xcode与OS X系统版本的兼容问题
- 第三方搜狗键盘keyboardwillshow通知走三次解决方案
- Win7系统播放视频影片出现锯齿、马赛克、模糊如何解决
- TableView 进阶
- windows 磁盘监控软件
- mxnet代码剖析之--Storage篇
- java程序打包jre以及制作安装包
- orcle命令
- Hark语音识别学习(二)--HARK数据类型
- 使用cocoapods导入第三方类库后 头文件没有代码提示?
- C#控件及常用设计整理
- robotframework笔记2
- 五 数据组织模式 2) 分区模式
- PHP中的header()函数
- 【操作系统】操作系统综述
- LeetCode(41)-Rectangle Area