最近项目测试中发现用一会就报java.lang.OutOfMemoryError: Java heap space,程序模块太多,排查起来比较困难,我想应该有一种工具可以很好监控虚拟机当前的状态,甚至帮我找出程序哪个地方最消耗内存,我想从根源上找到问题,不知道有没有好的工具,大家相互推荐下,在此先拜谢了!
解决方案 »
- Struts2 Action往JSP页面传值,部分数据丢失。是什么原因??
- eclipse里的xml编辑器
- 调用servlet出现这种错误,大家帮忙看一下啊!!!!
- 关于运用Spring的mvc进行程序开发所遇到的不能跳转的问题。
- 如何刷新l左页的问题
- 请教一个 Borland Enterprise Server 自带工具 iastool 的使用问题
- Spring运行出现如下信息帮忙看看是什么问题
- tomcat连接池能否主动回收???不用写con.close();stmt.close()之类的
- 请问TOMCAT5.0+APACHE2.0的配置???
- 郁闷啊,把同事的机器也搞的不能用了,达人救我
- 往Mysql里添加数据时报异常:
- 如果何javascript中取得struts2中<s:property value="intRowCount" />标签值,在线等,谢谢
如果没有,自己写一个拦截器,将所有模块调用之前的内存使用量和模块名用log打印。
分析log,判断内存泄露的可能方式。
一般来说在 “循环(包括递归)”、“I/O流”、“数据库海量数据存储”等地方比较容易出现。最后罗嗦一句,做一个项目时最好团队成员一开始就相互做代码check。对技术功底比较弱的人员分配一些风险低的功能。这种项目一开测就出现OutOfMemoryError还算好,要的碰到每跑几周才出现OutOfMemoryError异常的话测试都发现不了。
可以判断在程序中哪些方法分配了大量对象,也可以判断有没有被引用或者一开始不分配之类http://www.khelekore.org/jmp/.