JAVA程序内存溢出问题的分析
来源:互联网 发布:windows 打tar包 编辑:程序博客网 时间:2024/06/11 20:40
那么我们先加大PermGen的初始内存大小:
linux下在catalina.sh文件的开头加上:JAVA_OPTS="-Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m"
windows下在catalina.bat的文件开头加上:set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=256M -XX:MaxPermSize=256m
接着我们还是用可视化的内存查看工具来定位一下具体的问题。对于jdk6首选当然是自带的工具啦,比较常用的有jconsole和jvisualvm(使用后发现后者更强大,因为有丰富的插件支持)。这次又遇到一个比较诡异的问题,就是分析工具打开后居然找不到tomcat进程(事后发现居然启动的是jre,改成jdk应该就可以了)。
既然本地不让连,我就远程连接得了,打开JMX即可。
和上面一样,在catalina.sh或catalina.bat文件的开头的JAVA_OPTS里面加上
-Djava.rmi.server.hostname=192.168.1.101 -Dcom.sun.management.jmxremote.port=9000 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
启动程序以后用netstat查看一下端口是否正确打开,以确保远程可以连接上。
我这里偷懒了下,把authenticate关掉了,要是打开需要设置一些权限的东西,比较麻烦。这个设置在我本地的PC机上生效,但是在服务器上居然不行,可能装了什么软件把端口给封了,所以我只好再犯下贱,把端口改成1000。打开jvisualvm,点击file -> add JMX connection,然后加上localhost:1000就连上了。
等连上程序以后,观察一段时间的内存变化状况,我重点看了下Perm的情况,一直稳定在94m的样子,运行一天一切正常。可能是之前设置Perm内存大小没有生效,因为Perm默认初始化是16m,最大是64m,而实际占用量确实有可能导致这个问题,从目前的现象来看应该是不会再出现这个问题了。如果需要更进一步定位问题,还可以使用btrace去查看某个方法具体被调用的地方。这样可以定位到某些方法是否按预期执行。
- JAVA程序内存溢出问题的分析
- JAVA程序内存溢出问题的分析
- JAVA内存溢出的问题
- java --内存溢出的问题
- java 程序内存溢出问题查找
- java 程序内存溢出问题查找
- 问题记录---java程序内存溢出
- java 程序内存溢出
- Java 内存溢出分析
- 分析java内存溢出
- Java内存溢出分析
- java内存溢出分析
- Java内存溢出分析
- Java内存溢出分析
- java内存溢出分析
- JAVA 内存溢出 分析
- Java内存溢出的分析和解决
- Java内存溢出异常的分析过程
- Libgdx: 将Texturepacker打包的PNG图片还原成一张一张的单个的
- 黑马程序员D10集合框架总结
- 求解字谜游戏问题
- 泛类转换
- hdu 1114 Piggy-Bank
- JAVA程序内存溢出问题的分析
- 服务器×××上的MSDTC不可用解决办法
- 调试工具 Postman 使用说明
- utf-8编码
- C语言
- redis 主从复制
- 关于lsnrctl 的简写字母组合
- hdu1166 敌兵布阵
- 探索hash_set