一. 什么是垃圾
- 1.1) 一个对象使用完, 不再有任何引用指向他
- 这样的对象是垃圾
二. 为什么要处理垃圾
- 2.1) 内存是有限的, 这些无用的垃圾对象
- 2.2) 需要及时回收处理, 防止内存泄露
三. 怎么来处理垃圾
- 3.1) C++ 语言 :
对象不再使用了, 程序员调用对象的析构函数
才能释放内存
比较麻烦- 3.2) Java 语言 :
java 中有垃圾收回管理机制
自动回收程序的垃圾
四. Java 中的 GC
- 4.1) 优点 :
4.1.1) java 程序员不用考虑内存中的垃圾回收问题
- 4.2) 缺点 :
4.2.1) GC 自身也是个程序运行时, 会占用内存和 CPU
4.2.2) GC 对垃圾的回收并不是非常及时的处理
4.2.3) GC 只负责回收 java 程序中的垃圾
五. GC 识别垃圾的原理
- 5.1) 经典办法 :
引用计数法
如果想标记一个对象为垃圾
就把他赋值 null 就好了
eg:
Dog d = new Dog();
...
d = null;// d 没有引用了
六. finalize 方法
- 6.1) Object 类中定义的方法付
在 GC 将对象回收之前调用- 6.2) 重写 finalize 方法
- 6.3) 触发回收机制, 对象的值必须为 null