Java的四种引用类型及用法实例(本地缓存,ThreadLocal,DirectByteBuffer实现分析)

  • Post author:
  • Post category:java


Java的对象都是在堆中,我们程序中使用对象都是用的引用,通过引用来对对象进行修改,传递等,也就是说,jvm帮我们完成了对象的内存申请,创建,我们只需通过引用来使用对象就可以了,这样屏蔽了很多复杂的操作,那么java中引用有四种类型:

强引用:我们最常用的就是这种引用,比如Object obj = new Object(),那么obj就是强引用,如果一个对象具有强引用,那就类似我们经常穿的衣服啊等必不可少的生活用品,我们肯定不会把他扔掉,同样jvm的垃圾回收器也不会回收它。当内存空间不足的时候,java虚拟机宁可抛出OOM异常,也不会回收具有强引用的对象来释放内存。如果我们把obj 这个引用赋值为null,那么当jvm扫描到 Object这个对象不再存在强引用时,jvm将回收他

软引用:软引用是用来描述一些有用但并不是必需的对象,在Java中用java.lang.ref.SoftReference类来表示。对于软引用关联着的对象,只有在内存不足的时候JVM才会回收该对象。如果一个对象只有软引用,就类似鸡肋,食之无味、弃之可惜,如果内存空间足够大,垃圾回收期就不会回收它,如果内存空间不够了,就会回收这些对象。他的这种特性常常用来实现缓存,我们的缓存常常需要放到内存中,如果具备了这种特性,那么我们就不必担心缓存引发的内存溢出

弱引用:如果一个对象只有弱引用,那么就类似可有可无的生活用品,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。在java中,用java.lang.ref.WeakReference类来表示。

弱引用和软引用的区别在于&



版权声明:本文为dw147258dw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。