java 的引用类型

public class Demo {

	public static void main(String[] args) {
			
		/*
		 * 1.强引用(StrongReference)
		 * 	我们平常用一个变量 接收 新创建的对象  都是强引用  只要对象有一个强引用 垃圾回收机制 绝不会回收这个对象
		 * 	例如 A a = new A();  
		 * 	当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。
		 */
			
		String s = new String("abc");
		/*
		 * 2.软引用(SoftReference)
		 * 	如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;
		 * 	如果内存空间不足了,就会回收这些对象的内存。
		 * 	只要垃圾回收器没有回收它,该对象就可以被程序使用。
		 */
		
		SoftReference<String> softReference = new SoftReference<>(s);
 		
		/*
		 * 3.弱引用 (WeakReference)
		 * 	垃圾回收器一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存
		 */
		WeakReference<String> weakReference = new WeakReference<>(s);
		
		//当 清除强引用和软引用时 new String("abc")这个对象 只被弱引用 所以这个对象被称为弱可及对象
		s = null;
		softReference.clear(); //清除软引用
//		System.gc(); 
		
		System.out.println("软引用:"+softReference.get());
		System.out.println("弱引用:"+weakReference.get());
	}
}

这个时候打印的信息是

软引用:null

弱引用:abc


然后把 System.gc()那行注释打开 

这个时候打印的信息是

软引用:null

弱引用:null





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值