Java进程的Perm Size突然陡增

  • Post author:
  • Post category:java




一 问题描述

监控发现某个Java进程的Perm Size使用量从定时任务执行时间点开始就陡增到%90以上,定时任务执行完成后Perm Size仍然不下降。这是一个问题。相应的Heap Size大小比较平稳,没有出现陡增的现象。JDK的版本是1.7


wKiom1djtc_RXdG4AAPedLioTYk103.png-wh_50



二 问题分析

JVM的PermSpace主要用于存放Java程序运行时的class和中间数据等。PermSize的最小值默认是系统内存的1/64,最大内存默认识系统内存的1/4.可以通过以下参数指定最小和最大PermSize


-XX:PermSize=256M  -XX:MaxPermSize=256M

Permanent Generation即永久代对于大多数的应用的GC回收性能都不会有明显的影响。然而,有些应用会动态地生产和加载很多class文件,例如一些JSP页面。这些应用就需要更大的PermSize来装载额外的class文件。

使用

jmap -permstat 25230

打印永久代的统计信息

使用 jmap或者jstat等java调试命令时如果使用root用户Java进程无响应,那么可以使用

sudo -u noboday jmap -permstat 25230

这样指定Java进程的运行用户



三 问题解决

重新启动Java进程继续观察,如果还是持续上涨可以尝试加大PermSize

参考文档:


http://developer.51cto.com/art/201203/321431.htm


http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

转载于:https://blog.51cto.com/john88wang/1790348


关闭菜单