eclipse死循环占用的内存怎么清理 java程序消耗内存太大怎么办?应该如何解决?
浏览量:2162
时间:2023-05-09 16:06:51
作者:采采
java程序消耗内存太大怎么办?应该如何解决?
只是java程序的内存消耗太大,这不是问题。表现形式是什么(OOM还是GC),是哪个对象(或者数据)负责的?原因是什么(代码级)?为什么这会产生问题(设计不良或使用不当)?
既然说到如何优化,从个人经验来说,可以分为几个步骤:
找问题:先找出需要优化的地方,比如通过gclog GC,发现FGC频率过高,比如OOM。定位问题:其实就是分析问题的过程。利用JVM工具(如jmap jstat)或linux中的各种trace工具收集相关数据(线索),然后用代码分析问题,必要时可以重现,保证定位问题的准确性。看什么样的物体占用空间太大,与测试数据的规模不对应。查看是否存在内存泄漏。解决问题:你说的第二点其实需要在这一步做,而且必须是针对定位的问题有针对性的解决方案。优化算法。降低算法的空间复杂度。如果某些算法的空间复杂度可以从O(N*N)优化到O(N)甚至O(logN),那么内存使用量就会降低。检查是否有不必要的对象,减少这样的对象。为了提高这种能力,没有捷径可走,只有通过调查大量的案例来增加知识(原理),提高经验值。不建议 "优化代码并减少内存的使用。有一种说法是 "过早的优化是所有罪恶的根源。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。