导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1663862
访问量:207496
至今:
×
云标签 标签球>>
云标签 - Su的技术博客
博文->>首页 博主的更多博文>>
PermGen space 溢出 使用jstat查看 Permsize 占用情况 并设置 PermSize和MaxPermSize
Tags : Java,JVM发表时间: 2016-07-25 20:48:05
网站以前经常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是进程的编号,关于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  


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

应用在linux服务器上,所以设置catalina.sh如下: 
Java代码  收藏代码
  1. JAVA_OPTS='-Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m '  


请大家多多指教。


转自: http://zhangyou1010.iteye.com/blog/938060/


打赏
打赏
关注公众号
公众号
类别:Java| 阅读(2697)| 赞 (0)
上一篇 : 关于OOM的那些事儿
下一篇: linux 下Time_wait过多问题解决
评论
暂无评论!
发表评论
昵  称:

验证码:

内  容:

    同时赞一个 赞

推荐文章