java 内存溢出,找不到具体原因,请大家帮忙看看? IBM jdk 1.42 运行环境是 websphere 我分析了下gc回收文件,发现内存是不断上升的,一般是2-3天就到了最大值2G,然后就内存溢出了。 但是通过gc回收文件看不出具体是哪个对象占用内存。我也分析了heapdump,同样也看不出来。有没有可以动态监控内存的使用情况的工具?或者大家有其他更好的方法。 另外程序有一个静态数据集 static Vector vc ,程序经常会大批量的向里面添加对象,使用完后也会remove掉。我认为这样应该会被回收掉吧,请大家帮忙看看。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我常用的方法是用JMAP, 用jmap -histo <pid> 把对象数量打印出来。我写了一个脚本,每隔一段时间就打印信息,然后按照时间改名,收集到一定数量的数据后,我还有一个小程序,按照类名比较,分析数据趋势,变化不大的就删掉,变化乱的就存到一个excle文件里,然后用excle的图表功能,对可疑的类画时间-数量图,找出最有泄露嫌疑的,然后看代码。 jmap 是jdk 1.42里自带的? sun jdk 有jvisualvm.exe 和 jconsole.jar 都有dump了,没理由找不出问题的,找到占用量最大的对象,查看下都是被什么东西引用的重点关注各类static的Vector,ArrayList,Map 谢谢,大家的帮助!我分析了下heap dump ,占用大量内存的是几个类 org/apache/xerces/dom/Texlmpl org/apache/xerces/dom/ElementImpl org/apache/xerces/dom/ElementNSImpl org/apache/xerces/dom/AtrributeMap另外我程序是通过webservice用的是axis,接收到消息,然后把消息存入到一个statice ArrayList里,待我从队列中取出消息处理后,我会remove掉ArrayList里的消息。我现在担心的是在静态集合里的对象是不是gc会回收得比较慢,所以导致内存溢出了 dom?你里面解析了dom文件没有?是怎么做处理的? 程序中 没有去解析dom,只是用到了axis,不是webservice会自己去调用到xerces 还有一种情况希望对楼主有用··就是import的时候不能只引用到包·然后就一个通配符··我的曾经测试过·程序到后面比那些具体引用类的程序占用的内存要大很多·· 都还没用过,jmap的好使,然后就使用mat工具分析dump文件 确实是有大量对象是被static ArrayList引用。不过程序是会remove里面的对象的,是不是因为ArrayList是static的,所以尽管remove了,但是还是清除不掉引用,内存空间还是没有释放。 这个和static没什么关系吧,static只是说明ArrayList是静态的无法释放,但里面的元素是new出来的,remove了里面的元素就释放了。建议你检查下remove的逻辑是否有问题。 我也遇到过内存泄露的问题,查了好久发现时webService引起的我用的是axis2 1.4.1,这个版本bug客户端的stub改成单例就行了 我调用的就是ArryaList类的remove方法。 java显示出现次数最多的数字~高手帮帮忙~~ 回车事件没有反应,是什么问题 java 读文件出错 【请教】如何用JAVA SWING 做用户登录 java环境变量的配置 如何撤销控件 字符码转换的问题 大家有没有java解压和压缩的代码呀!就象winzip这样的功能.谢谢了。 数组插入数据的问题 转载:一个身先事足的1.4的失败者的自白 关于局部变量赋初值的问题 水仙花数问题
我写了一个脚本,每隔一段时间就打印信息,然后按照时间改名,收集到一定数量的数据后,我还有一个小程序,按照类名比较,分析数据趋势,变化不大的就删掉,变化乱的就存到一个excle文件里,然后用excle的图表功能,对可疑的类画时间-数量图,找出最有泄露嫌疑的,然后看代码。
jmap 是jdk 1.42里自带的?
重点关注各类static的Vector,ArrayList,Map
org/apache/xerces/dom/ElementImpl
org/apache/xerces/dom/ElementNSImpl
org/apache/xerces/dom/AtrributeMap另外我程序是通过webservice用的是axis,接收到消息,然后把消息存入到一个statice ArrayList里,待我从队列中取出消息处理后,我会remove掉ArrayList里的消息。我现在担心的是在静态集合里的对象是不是gc会回收得比较慢,所以导致内存溢出了
dom?你里面解析了dom文件没有?是怎么做处理的?
我也遇到过内存泄露的问题,查了好久发现时webService引起的
我用的是axis2 1.4.1,这个版本bug
客户端的stub改成单例就行了
我调用的就是ArryaList类的remove方法。