面试:对象引用类型
- 开发
- 28
-
一、对象引用类型分为哪几类?
1、强引用
- 普通变量赋值即为强引用,如A a = new A();
- 通过GC Root的引用链,如果强引用不到该对象,该对象才能被回收
2、软引用
- 例如:SoftReference a = new SoftReference(new A());
- 如果仅有软引用该对象时,首次垃圾回收不会回收该对象,如果内存仍不足,再次回收时才会释放对象
- 软引用自身需要配合引用队列来释放
- 典型例子是反射数据
3、弱引用
- 例如:WeakReference a = new WeakReference(new A());
- 如果仅有弱引用引用该对象时,只要发生垃圾回收,就会释放该对象
- 弱引用自身需要配合引用队列来释放
- 典型例子是 ThreadLocalMap 中的Entry对象
4、虚引用
- 例如:PhantomReference a = new PhantomReference(newA());
- 必须配合引用队列一起使用,当虚引用引用的对象被回收时,会将虚引用对象入队,由Reference Handler线程释放其关联的外部资源
- 典型例子是Cleaner释放DirectByteBuffer占用的直接内存
原文地址:https://blog.csdn.net/icbbm/article/details/138220102
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:https://www.suanlizi.com/kf/1784218958715555840.html
如若内容造成侵权/违法违规/事实不符,请联系《酸梨子》网邮箱:1419361763@qq.com进行投诉反馈,一经查实,立即删除!