Java常见面试题:对象引用

对象引用

在Java中内存关系有两部分内容:内存分配、垃圾回收。
从JDK1.2开始就提出四种引用关系:强引用、软引用、弱引用、虚引用。许多时候可能不需要编写代码,但对于这些概念必须牢记。

(1)强引用:对象将一直被引用,即使出现了“OutOfMemeryError”错误信息;

Java常见面试题:对象引用
Java常见面试题:对象引用

(2)软引用:对象将被长时间保存,一直到出现内存不足的情况才会被回收,这样的操作很多时候都会用于缓存的开发上,例如在MyBatis里就提供有软引用模式的缓存模式;

Java常见面试题:对象引用
Java常见面试题:对象引用
如果这个时候出现了内存不足的问题,才会进行回收,也就是说对象会尽可能保存的时间长一些。

(3)弱引用:一旦有了垃圾收集操作之后就会进行回收;

Java常见面试题:对象引用
Java常见面试题:对象引用
Java常见面试题:对象引用

(4)虚引用:也叫幽灵引用,这种操作返回的内容永远都是null,就是不引用;

Java常见面试题:对象引用

在对象垃圾收集前一定会调用finalize()方法,但如果finalize()占着它的强引用的对象不放,就会出现一个逻辑上的死锁,这个时候可以通过虚引用来解决。

更多专业知识,面试技巧就在阿里云开发者社区,持续更新中……
感谢浏览~
本内容来源于阿里云大学-Java面试技巧

上一篇:阿里巴巴1682亿背后的“企业级”高效持续交付


下一篇:Tensorflow源码解析2 -- 前后端连接的桥梁 - Session