记一次 java.lang.OutOfMemoryError: PermGen space解决过程
来源:互联网 发布:mac版premiere出gif 编辑:程序博客网 时间:2024/06/05 05:11
tomcat工程,运行一段时间卡死。日志报Perm内存溢出。
记录一下排查过程,以及解决思路
查看堆区内存使用情况
jmap -heap pid
Attaching to process ID 14735, please wait...Debugger attached successfully.Server compiler detected.JVM version is 24.65-b04using thread-local object allocation.Parallel GC with 8 thread(s) #采用并行GC策略 #java heap配置Heap Configuration: MinHeapFreeRatio = 0 MaxHeapFreeRatio = 100 MaxHeapSize = 8392802304 (8004.0MB) NewSize = 1310720 (1.25MB) MaxNewSize = 17592186044415 MB OldSize = 5439488 (5.1875MB) #老生代大小 NewRatio = 2 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) #JVM初始分配的非堆内存 MaxPermSize = 85983232 (82.0MB) #永久带最大空间 G1HeapRegionSize = 0 (0.0MB)#堆实际使用情况Heap Usage:PS Young GenerationEden Space: capacity = 2796552192 (2667.0MB) used = 0 (0.0MB) free = 2796552192 (2667.0MB) 0.0% usedFrom Space: capacity = 524288 (0.5MB) used = 0 (0.0MB) free = 524288 (0.5MB) 0.0% usedTo Space: capacity = 524288 (0.5MB) used = 0 (0.0MB) free = 524288 (0.5MB) 0.0% usedPS Old Generation capacity = 5595201536 (5336.0MB) used = 87076912 (83.04301452636719MB) free = 5508124624 (5252.956985473633MB) 1.5562783831777958% usedPS Perm Generation capacity = 85983232 (82.0MB) used = 85983080 (81.9998550415039MB) free = 152 (1.4495849609375E-4MB) 99.99982322134623% used31026 interned Strings occupying 3399648 bytes.
对一些配置的定义,在此稍作解释;
- MinHeapFreeRatio
指定 jvm heap 在使用率小于 n 的情况下 ,heap 进行收缩 ,Xmx==Xms 的情况下无效 , 如 :- - XX:MinHeapFreeRatio=30
指定 jvm heap 在使用率大于 n 的情况下 ,heap 进行扩张 ,Xmx==Xms 的情况下无效 , 如 :-XX:MaxHeapFreeRatio=70 - NewSize/MaxNewSize:定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。
- NewRatio=2 年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:2。
- SurvivorRatio=8:设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为2:4,即1个Survivor区占整个年轻代大小的1/6。
上面是java进程内存的使用情况。可以看到永久带满了,而其他区域使用率不高。
查看gc情况
jstat -gc -h 10 14735 1000
其中
- C结尾的是Capacity
- U结尾的是Used
- S0为年轻代中第一个survivor
- S1为年轻代中第二个survivor
- E为年轻代中Eden
- O为老年代
- P为永久带
- YGC从应用程序启动到采样时年轻代中gc次数
- YGCT从应用程序启动到采样时年轻代中gc所用时间
单位为KB
…从上图可以看出。在1秒内,系统做了8次Full GC。
这样看,原因已经很明显了,Perm区容量太小,导致频繁Full GC,最终Full GC也无法释放足够空间时,报 java.lang.OutOfMemoryError: PermGen space。而堆区内存过大,存在浪费现象。因此,解决办法是调大Perm区内存,减小堆区内存。
阅读全文
0 0
- 记一次 java.lang.OutOfMemoryError: PermGen space解决过程
- 解决java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space 解决大全
- java.lang.OutOfMemoryError: PermGen space解决
- 解决java.lang.OutOfMemoryError: PermGen space
- 解决java.lang.OutOfMemoryError: PermGen space
- Tomcat java.lang.OutOfMemoryError: PermGen space解决
- java.lang.OutOfMemoryError: PermGen space 错误解决
- java.lang.OutOfMemoryError: PermGen space错误解决
- java.lang.OutOfMemoryError: PermGen space 解决截图
- java.lang.OutOfMemoryError: PermGen space 解决
- java.lang.OutOfMemoryError: PermGen space 解决
- 解决 Tomcat java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space PermGen space
- 一次线上问题排查:java.lang.OutOfmemoryError: PermGen Space
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space
- java.lang.OutOfMemoryError: PermGen space
- 2017 icpc 南宁赛区 B.Train Seats Reservation(水题)
- Django项目与Django应用的关系及django.apps模块
- android接入百度SDK
- ubuntu下解决"无法获锁/var/lib/dpkg/lock-open"的方法
- 快速掌握设计模式之建造者模式!
- 记一次 java.lang.OutOfMemoryError: PermGen space解决过程
- 欢迎使用CSDN-markdown编辑器
- ajax自定义header跨域访问webapi 405异常的解决方法
- 软件工程 习题二 课后作业(2)
- [hiho1579] Reverse Suffix Array [ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛 B]
- 【微信小程序】字符串转数字
- html实现用户注册(模板)
- 理解Java特性
- unity android .so 文件找不到,而且打不进apk包的问题