深入理解JVM虚拟机之:JAVA引用类型
引用类型可以说是整个Java开发的灵魂所在,如果没有合理的引用操作,那么就有可能产生垃圾问题,但是对于引用也需要有一些合理化的设计。在很多的时候并不是所有的对象都需要被我们一直使用,那么就需要对引用的问题做进一步的思考。从JDK1.2之后关于引用提出了四种方案:
- 强引用:当内存不足的时候,JVM宁可出现OutOfMemory错误停止,也需要进行保存,并且不会将此空间回收;
- 软引用:当内存不足的时候,进行对象的回收处理,往往用于高速缓存中;
- 弱引用:不管内存是否紧张,只要由垃圾产生了,那么立即回收;
- 幽灵引用:和没有引用是一样的。
1. 强引用
强引用是JVM默认的支持模式,即:在引用的期间内,如果该堆内存被指定的栈内存有联系,那么该对象就无法被GC所回收,而一旦出现了内存空间不足,就会出现“OutOfMemoryError”错误信息。
范例:观察强引用。
package cn.test.demo;
public class TestDemo{
public static void main(String[]args){
Object obj=new Object();//强引用,默认的支持
Object ref=obj;//引用传递
obj=null;//断开了一个连接
System.gc();
System.out