(转载)PermGen space 溢出 使用jstat查看 Permsize 占用情况 并设置 PermSize和MaxPermSize

来源:互联网 发布:seo云优化是什么意思 编辑:程序博客网 时间:2024/04/29 17:15

 

网站以前经常java.lang.OutOfMemoryError,也没仔细去查看到底是哪里出了问题,昨晚又出现这个问题

了,今天就仔细查找了下资料,在这里总结下,如有不正确的地方,非常欢迎各位指出。

以前对java.lang.OutOfMemoryError的概念,只局限于jvm内存溢出了,

今天才发现java.lang.OutOfMemoryError 出现时,有多种情况,比如:PermGen space ,Java heap space  。

我现在遇到的是java.lang.OutOfMemoryError: PermGen space ,查了下资料,一般的说法是内存的永久保

存区域溢出了,永久保存区域是存放class信息和meta信息

的,分配了后,jvm是不会去回收的。必须让jvm分配更多的permsize,才能解决这个问题。

问题来了,我的应用这个permsize一般占用多少呢? 我该在catalina.sh或catalina.bat里面给这个值设置多少呢?

有人说用jconsole或其他内存监控程序来查看这些数据,但是我不想这么麻烦,要配置参数,监听端口什么的,因为在

Qieqie的一个回帖里面,他提到可以用命令查看permsize的占用情况(http://www.iteye.com/topic/80620#289390)

所以我倾向于用一条简单的命令就可以知道permsize的占用情况,结果这方面的命令还真不少,jstat就是其中之一,

我使用的命令是: jstat -gcpermcapacity pid ,pid是进程的编号(可以用jdk工具命令查看: ),关于jstat的使用说明可以查看 sun的网站:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

jstat输出的数据都是以kb为单位的。在我的应用中,permsize占用情况


Java代码 
1.PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT     
2.   16384.0    65536.0    65536.0    65536.0   132     3    1.866    2.977 
PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT  
   16384.0    65536.0    65536.0    65536.0   132     3    1.866    2.977

所以我决定把PermSize设为128M, MaxPermSize设为256M。

应用在linux服务器上,所以设置catalina.sh如下:

Java代码 
1.JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m ' 
JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m '


请大家多多指教。

 


==================
以上是转载,以下是本人实测:

C:\Users\tjx>jps -l
5144 org.apache.catalina.startup.Bootstrap
6996 sun.tools.jps.Jps
4984
1272 com.starbase.starteam.gui.StarTeamFrame

C:\Users\tjx>jstat -gcpermcapacity 5144
  PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT
   12288.0    65536.0    39424.0    39424.0    94     9    0.970    1.483

C:\Users\tjx>


  PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT 这些信息的 意思,
请参看: https://docs.oracle.com/javase/1.5.0/docs/tooldocs/share/jstat.html

-gcpermcapacity Option    -------Permanent Generation Statistics  Column Description

PGCMN Minimum permanent generation capacity (KB).
PGCMX Maximum permanent generation capacity (KB).
PGC     Current permanent generation capacity (KB).
PC       Current permanent space capacity (KB).
YGC     Number of young generation GC events.
FGC     Number of full GC events.
FGCT   Full garbage collection time.
GCT    Total garbage collection time.
--谷歌翻译--
-gcpermcapacity选项-------永久代统计信息列描述

PGCMN最低永久性的发电容量(KB)。
PGCMX最大永久性的发电容量(KB)。
PGC现任常任发电容量(KB)。
PC当前的永久空间容量(KB)。
年轻一代GC事件YGC数。
全GC事件FGC数。
FGCT完全的垃圾收集时间。
GCT总的垃圾收集时间。


 

0 0
原创粉丝点击