您的位置:首页 > 其它

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"

问题解决。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: