我们讲过这么多的引用,还有一个引用大家平时可能接触不到,那就是虚引用。基本上没有什么引用,还经常会被回收,使用的时候需要结合队列。有的小伙伴就说,那它有什么用处呢?不着急,我们一起先来学习下虚引用的概念、应用场景,通过代码示例体会它的作用。
1.概念
虚引用是所有类型中最弱的一个。一个持有虚引用的对象,和没有引用几乎是一样的,随时可能被垃圾回收器回收。当试图通过虚引用的get()方法取得强引用时,总是会失败。并且,虚引用必须和引用队列一起使用,它的作用在于跟踪垃圾回收过程。
2.应用场景
可以用来跟踪对象被垃圾回收器回收的活动,当一个虚引用关联的对象被垃圾回收器回收之前会收到一条系统通知。
3.实例
Tracker(String path, FileDeleteStrategy deleteStrategy, Object marker, ReferenceQueue<? super Object> queue) { //marker是具体的虚引用对象 super(marker, queue); this.path = path; this.deleteStrategy = deleteStrategy == null ? FileDeleteStrategy.NORMAL : deleteStrategy; }
4.总结
强引用:从来不会被回收
软引用:当内存不足时会被回收
弱引用:正常垃圾回收时回收
虚引用:任何时刻都会被垃圾回收器回收
本篇关于虚引用的介绍到这里就可以结束了,虽然说它没有什么引用的作用,但是用来优化一些程序还是不错的选择,这个知识点大家了解到了就行。