JAVA内存泄漏
来源:互联网 发布:润锦众成网络借贷 编辑:程序博客网 时间:2024/06/09 15:25
1.什么是内存泄漏
对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。
2.原因
举个栗子,A对象引用B对象,A对象的生命周期(t1-t4)比B对象的生命周期(t2-t3)长的多。当B对象没有被应用程序使用之后,A对象仍然在引用着B对象。这样,垃圾回收器就没办法将B对象从内存中移除,从而导致内存问题,因为如果A引用更多这样的对象,那将有更多的未被引用对象存在,并消耗内存空间。
B对象也可能会持有许多其他的对象,那这些对象同样也不会被垃圾回收器回收。所有这些没在使用的对象将持续的消耗之前分配的内存空间。
3.防止内存泄漏
⑴特别注意一些像HashMap、ArrayList的集合对象,它们经常会引发内存泄漏。当它们被声明为static时,它们的生命周期就会和应用程序一样长。
⑵特别注意事件监听和回调函数。当一个监听器在使用的时候被注册,但不再使用之后却未被反注册。
⑶“如果一个类自己管理内存,那开发人员就得小心内存泄漏问题了。” 通常一些成员变量引用其他对象,初始化的时候需要置空。
阅读全文
0 0
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- java 内存泄漏
- java内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- Java的内存泄漏
- java内存泄漏
- Java的内存泄漏
- Java内存泄漏问题
- Java的内存泄漏
- Java的内存泄漏
- Linux中C/C++动态库、静态库编译
- Dpdk distrabutor
- 图——深度优先搜索(Graph
- build.gradle中几个参数的意义
- Const
- JAVA内存泄漏
- Python中字典合并的四种方法
- 简单平滑滤波器
- vb中两种重要的控制语句
- 通过接口来实现多态性,接口可以作为参数
- union的使用注意事项
- javascript中childNodes与children 区别 以及firstChild与firstElementChild区别
- Nutanix:放弃SAN 做真正的融合
- 计算机网络概述