java.lang.OutOfMemoryError: PermGen space 问题定位的方法

来源:互联网 发布:拦截response返回数据 编辑:程序博客网 时间:2024/06/05 18:14

1)首先要获取产生java.lang.OutOfMemoryError: PermGen space问题的heapDump数据,也就是Java虚拟机在内存中的数据copy

      方法(此方法针对SUN的JDK):

                 系统启动加入参数:–XX:+HeapDumpOnOutOfMemoryError

                设置示例:set JAVA_OPTS=%JAVA_OPTS% -server -Xms512m -Xmx800m -XX:PermSize=64M-XX:MaxPermSize=128m-Djava.awt.headless=true-XX:+HeapDumpOnOutOfMemoryError

                注:如增加HeapDumpOnCtrlBreakOption就可以通过ctrl+break或收到SIGQUIT生成heapdump文件

                设置示例: set JAVA_OPTS=%JAVA_OPTS% -server-Xms512m -Xmx800m -XX:PermSize=64M-XX:MaxPermSize=128m-Djava.awt.headless=true-XX:+HeapDumpOnOutOfMemoryError-XX:+HeapDumpOnCtrlBreak

       设置好上述参数后,在发生java.lang.OutOfMemoryError: PermGen space问题时,Java虚拟机会生成一个hprof格式的文件,如果是在eclipse的开发模式下发生此问题,在eclipse的控制台会输出如下信息:             

       java.lang.OutOfMemoryError: PermGen space       Dumping heap to java_pid5876.hprof ...       Heap dump file created [168021794 bytes in 2.515 secs]
        然后找到hprof格式的heapDump文件,(eclipse开发模式下该文件的位置就是eclipse安装目录,tomcat的没试过,网上说是放在了tomca_home/bin目录下了)

2)分析hprof文件。这个需要用到专业的分析工具,工具链接如下:

        http://java.sun.com/developer/technicalArticles/Programming/HPROF.html


0 0
原创粉丝点击