JVM管理内存的方式:
堆内存Heap:对象实例与变量
栈内存Stack:静态方法
对象引用的结构层次:
1. 强引用:根引用root reference
2. 软引用:有较强的引用功能,只有内存不够的时候才回收这类内存,实现一些常用资源的cache功能。软引用为了避免系统崩溃,系统内存溢出。
3. 弱引用(Weak reference):与软引用最大的不同是GC在进行回收时,软引用对象需要算法检查才能回收,而Weak引用对象总是进行回收。一旦有对象强设为null时,对象引用就不存在了,GC会快速的回收该对象空间。
4. 虚引用:用的很少。
当一个对象处于可收集阶段、终结阶段与释放阶段时,该对象可能处于下面的状态:
1. 对象不可达。
2. finalize执行了。
3. 对象空间被重用了。