非诚勿扰贴——如何修复内存泄露? 面试经常被面到这个问题,我觉得应该从这几方面问:1.内存泄露与内存溢出的区别2.程序OOM时,如何确定他是内存泄露还是内存溢出3.确定后分别如何解决请各位大牛们畅谈。小弟不慎感激。jvm内存泄露oom内存溢出 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 - - 这是个经验问题,写程序少的或者没有工作经验的人一般比较模糊。1、内存泄露是指,程序在运行期间,有一部分内存没有或者无法被回收,而内存溢出是指程序对内存的使用量超出给它的额定使用量。它们之间有一定关系,但是没有必然的关系,内存泄露不一定会内存溢出,而内存溢出也不一定就是内存泄露造成的。2、OOM时,肯定是内存溢出,因为这个错误就是内存溢出错误,因此只要判断这个溢出是否内存泄露造成的,还是非内存泄露,也许是给定的额定内存不足以满足需求,也可能是程序设计的缺陷,如果是c++,或者C,就要分析内存是否被free掉,而java的话,基本上就是List或者Map,而且通常是静态的才会造成泄露(jni不在此讨论范畴)。3、如果是内存泄露,查找起来就比较困难了,因为你要仔细思考你的实现,然后想到可能会内存泄露的地方,然后一一排查,还要跟踪代码,如果有测试工具帮助,会很快。如果是单纯的内存溢出,那就比较简单了,因为肯定会有个数据爆发的需求,哪个模块实现的这种需求,针对情况调整就可以了。 这个可以用jprofile6快速查出来,jprofile可以把各个对象的引用数量及引用关系罗列出来,可以根据这个来检查出哪里泄漏了。谢谢 我是求分的 急用 java内存泄露问题 如何覆盖txt文件中的内容 关于获取音乐路径的问题 我是山区农村的孩子,买不起vs。那么Java+mySQL是免费的把?可以用来开发商业程序把?vs好像不行。 怎样限制对JTextField可输入数据范围进行限制? Thread的sleep根本就没有用? 有没有这样的函数? 文件句柄close问题 刚学java的巨小问题? 说说大家心目中的行业软件领先的企业!对大家将来发展也有用的! Java File 关于过滤的一个例子,对例子中的isDirectory()有疑问 域与变量的区别是什么
1、内存泄露是指,程序在运行期间,有一部分内存没有或者无法被回收,而内存溢出是指程序对内存的使用量超出给它的额定使用量。它们之间有一定关系,但是没有必然的关系,内存泄露不一定会内存溢出,而内存溢出也不一定就是内存泄露造成的。
2、OOM时,肯定是内存溢出,因为这个错误就是内存溢出错误,因此只要判断这个溢出是否内存泄露造成的,还是非内存泄露,也许是给定的额定内存不足以满足需求,也可能是程序设计的缺陷,如果是c++,或者C,就要分析内存是否被free掉,而java的话,基本上就是List或者Map,而且通常是静态的才会造成泄露(jni不在此讨论范畴)。
3、如果是内存泄露,查找起来就比较困难了,因为你要仔细思考你的实现,然后想到可能会内存泄露的地方,然后一一排查,还要跟踪代码,如果有测试工具帮助,会很快。如果是单纯的内存溢出,那就比较简单了,因为肯定会有个数据爆发的需求,哪个模块实现的这种需求,针对情况调整就可以了。