深入JVM原理(十一)Java引用类型

目录

深入JVM 原理(一)Java内存模型:https://blog.csdn.net/qq_39827935/article/details/81285009
深入JVM原理(二)Java对象访问模式:https://blog.csdn.net/qq_39827935/article/details/81285038
深入JVM原理(三)JVM 垃圾收集:https://blog.csdn.net/qq_39827935/article/details/81285059
深入JVM原理(四)JVM垃圾回收流程:https://blog.csdn.net/qq_39827935/article/details/81285084
深入JVM原理(五)Java堆内存调整参数(调优关键):https://blog.csdn.net/qq_39827935/article/details/81285099
深入JVM原理(六)年轻代:https://blog.csdn.net/qq_39827935/article/details/81285115
深入JVM原理(七)老年代、永久代和元空间:https://blog.csdn.net/qq_39827935/article/details/81285133
深入JVM原理(八)JVM垃圾回收策略:https://blog.csdn.net/qq_39827935/article/details/81285156
深入JVM原理(九)JVM垃圾回收策略参数配置:https://blog.csdn.net/qq_39827935/article/details/81285175
深入JVM原理(十)G1收集器:https://blog.csdn.net/qq_39827935/article/details/81285207
深入JVM原理(十一)Java引用类型:https://blog.csdn.net/qq_39827935/article/details/81285227

引用类型可以说是整个java开发的灵魂所在,如果没有合理的操作,那么就有可能产生垃圾问题,但是对于引用也需要一些合理化的设计。 
在很多的时候并不是所有的对象都需要对我们一直使用,那我们就需要对引用的问题做进一步的思考。所以从 JDK 1.2之后,关于引用提出了四种方案: 
强引用:当内存不足的时候,JVM宁可出现OutOfMemory错误停止,也需要就进行保存,并且不会将此空间回收;如新new一个对象; 
软引用:当内存不足的时候,进行对象的回收处理,往往用于高速缓存中; 
弱引用:不管内存是否紧张,只要有垃圾产生,则立即回收; 
幽灵引用:和没有引用是一样的;

强引用

JVM默认的引用模式。即:在引用期间内,如果该堆内存被指定的栈内存有联系,那么该对象就无法被GC所回收,而一旦出现了内存空间不足,就会出现“OutOfMemoryError”错误信息; 
范例:观察强引用

Object object = new Object(); //强引用 ,默认支持 
Object obj = object; //引用传递 
object = null; //断开一个连接 
System.gc(); 
System.out.println(obj);

如果此时堆内存有一个栈内存指向,那么该对象将无法被该GC回收; 
强引用是我们一直使用的模式,并且也是以后常使用的引用模式,正因为强引用存在这种内存分配异常问题,所以,尽量少实例化对象。

软引用

在许多的开源组件中,往往使用软引用作为缓存组件出现,其最大的特点在于:不足时回收,不充足时不回收。要想实现软引用,则需要一个单独的类来实现控制:java.lang.ref.SoftReference

构造:public SoftReference(T referent) 
取出数据:public T get()

范例:观察软引用

如果此时内存空间充足,那么对象将不会回收,否则,会进行回收处理;

弱引用

本质含有是只要一进行GC处理,那么所引用的对象将会被立刻回收。弱引用需要使用的是Map接口的子类。

一旦出现有GC,则必须进行回收处理,

扫描二维码关注公众号,回复: 2487910 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_39827935/article/details/81285227
今日推荐