深入理解Java虚拟机——内存泄露和内存溢出——史上最烂的图文并茂结合
-
内存溢出
系统已经不能再分配出你所需要的空间,比如你需要100G的空间,系统只剩900G了,这就叫内存溢出 -
内存泄露
对象已经没有被应用程序使用,但是垃圾回收器没办法移除他们,因为还在被引用者
原理图
对于刚在上大二的我而言,以下是我遇到过的内存泄露问题,并查阅资料总结出来 -
如何防止内存泄露?
-
特别注意一些像HashMap、ArrayList的集合对象,它们经常会引发内存泄漏。当它们被声明为static时,它们的生命周期就会和应用程序一样长。
-
特别注意事件监听和回调函数。当一个监听器在使用的时候被注册,但不再使用之后却未被反注册。
-
如果一个类自己管理内存,那我们就得小心内存泄漏问题了。” 通常一些成员变量引用其他对象,初始化的时候需要置空。