【求助】内存泄漏应该如何解决? 感谢回复!因为这个程序是每个一段时间采集一次,后面平稳是因为采集的线程使用了sleep正在休眠,等待下一次的采集一旦下一次的采集开始,还是会继续增长 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 感谢您的回复!不过我才是个JAVA新手,可能不太理解您的意思,您的意思是问如何采集的吗?这是一个使用新浪微博API采集的,数据库是mysql,还使用了hibernate组件 感谢回复!因为这个程序是每个一段时间采集一次,后面平稳是因为采集的线程使用了sleep正在休眠,等待下一次的采集一旦下一次的采集开始,还是会继续增长你说的下一次采集开始内存增长,但是在你给出的图表里,从15:20-15:40这段时间里的两次采集都没有出现大角度的上升情况 感谢回复!因为这个程序是每个一段时间采集一次,后面平稳是因为采集的线程使用了sleep正在休眠,等待下一次的采集一旦下一次的采集开始,还是会继续增长你说的下一次采集开始内存增长,但是在你给出的图表里,从15:20-15:40这段时间里的两次采集都没有出现大角度的上升情况感谢回复!十分不好意思,是我个人偷懒了,这个图是我把循环取消之后测试的,目的是看只采集一次的情况下,虚拟机能否把多出来的那些资源回收掉,结果等了很长时间也没有回收,不好意思,我的懒惰造成了您的误解! 应该是HashMap放入了数据,没有remove,导致的内存泄露 首先你是个网页程序,那个class loader是tomcat用来加载你的网页程序的,所以在你程序里所有占用的内存最终都会反映到那个class loader上面去。于是乎它是最大的占用者,但这没有意义。你在代码里面搜索"new"关键字,看看这些新建的对象都到哪里去了。这可能是个大工程,不过对你理解熟悉代码很有帮助 用JDK自带的jmap(bin目录下)查看当前进程里面每个对象的占用情况,然后截图发出来看看。jmap用法自己查。 从图形中看不出什么地方有内存泄漏啊?一个 Java Web 应用(含 Servlet 容器)占用 1GB 的内存是正常的。 非常感谢以上各位的回答!!我是LZ,问题已经解决了,我将程序重新写了一遍,每写一部分就测试一下,结果发现问题出现在hibernate持久化部分,具体就是SessionFactory开启太多导致的。SessionFactory是一个重量级单位,所以只实例化一次就好了。改完之后,程序只占很低的内存,而且采集的效率也上升了!说到底还是自己的学习不到位,再次感谢各位的回答! 为什么 导入substance6.0后运行官方实例报错请高手看看(5.2的没问题) java获取文件后缀名 求一个关于日期的算法? Eclipse的一个BUG HttpServletRequest里的getParameterValues用法?(request.getParameterValues) 新手问一个关于swt/jface的问题,请高手指教 为何清华大学出版社的JAVA2实用教程书中的连接SQL SERVER 2000的例子不能成功? 我与别的女孩发生了关系,女友会原谅我吗 致谦信 Comparator 的一些小问题 如何判断搜索关键字 这个焦点失去事件怎么处理?
感谢您的回复!
不过我才是个JAVA新手,可能不太理解您的意思,您的意思是问如何采集的吗?
这是一个使用新浪微博API采集的,数据库是mysql,还使用了hibernate组件
因为这个程序是每个一段时间采集一次,后面平稳是因为采集的线程使用了sleep正在休眠,等待下一次的采集一旦下一次的采集开始,还是会继续增长你说的下一次采集开始内存增长,但是在你给出的图表里,从15:20-15:40这段时间里的两次采集都没有出现大角度的上升情况
因为这个程序是每个一段时间采集一次,后面平稳是因为采集的线程使用了sleep正在休眠,等待下一次的采集一旦下一次的采集开始,还是会继续增长你说的下一次采集开始内存增长,但是在你给出的图表里,从15:20-15:40这段时间里的两次采集都没有出现大角度的上升情况感谢回复!
十分不好意思,是我个人偷懒了,这个图是我把循环取消之后测试的,目的是看只采集一次的情况下,虚拟机能否把多出来的那些资源回收掉,结果等了很长时间也没有回收,不好意思,我的懒惰造成了您的误解!
我是LZ,问题已经解决了,我将程序重新写了一遍,每写一部分就测试一下,结果发现问题出现在hibernate持久化部分,具体就是SessionFactory开启太多导致的。SessionFactory是一个重量级单位,所以只实例化一次就好了。改完之后,程序只占很低的内存,而且采集的效率也上升了!说到底还是自己的学习不到位,再次感谢各位的回答!