外贸网站空间选择,彩票网站开发 晓风,昆明网站建设公司_,网站开发 软件有哪些目录 1. 软引用软引用的使用场景-缓存 2.弱引用3.虚引用和终结器引用 可达性算法中描述的对象引用#xff0c;一般指的是强引用#xff0c;即是GCRoot对象对普通对象有引用关系#xff0c;只要这层关系存在#xff0c; 普通对象就不会被回收。除了强引用之外#xff0c;Ja… 目录 1. 软引用软引用的使用场景-缓存 2.弱引用3.虚引用和终结器引用 可达性算法中描述的对象引用一般指的是强引用即是GCRoot对象对普通对象有引用关系只要这层关系存在 普通对象就不会被回收。除了强引用之外Java中还设计了几种其他引用方式 ⚫ 软引用 ⚫ 弱引用 ⚫ 虚引用 ⚫ 终结器引用 1. 软引用
软引用相对于强引用是一种比较弱的引用关系如果一个对象只有软引用关联到它当程序内存不足时就会将软引用中的数据进行回收。 在JDK 1.2版之后提供了SoftReference类来实现软引用软引用常用于缓存中 软引用的执行过程如下
1.将对象使用软引用包装起来new SoftReference对象类型(对象)。2.内存不足时虚拟机尝试进行垃圾回收。3.如果垃圾回收仍不能解决内存不足的问题回收软引用中的对象。4.如果依然内存不足抛出OutOfMemory异常 软引用中的对象如果在内存不足时回收SoftReference对象本身也需要被回收。如何知道哪些SoftReference对象需要回收呢 SoftReference提供了一套队列机制1、软引用创建时通过构造器传入引用队列2、在软引用中包含的对象被回收时该软引用对象会被放入引用队列3、通过代码遍历引用队列将SoftReference的强引用删除 软引用的使用场景-缓存
软引用也可以使用继承自SoftReference类的方式来实现StudentRef类就是一个软引用对象。通过构造器传入软引用包含的对象以及引用队列。 使用软引用实现学生数据的缓存 软引用如果被回收要清理HashMap中的key。
2.弱引用
弱引用的整体机制和软引用基本一致区别在于弱引用包含的对象在垃圾回收时不管内存够不够都会直接被回收。在JDK 1.2版之后提供WeakReference类来实现弱引用弱引用主要在ThreadLocal中使用。
弱引用对象本身也可以使用引用队列进行回收。
3.虚引用和终结器引用 ⚫ 这两种引用在常规开发中是不会使用的。 ⚫虚引用也叫幽灵引用/幻影引用不能通过虚引用对象获取到包含的对象。虚引用唯一的用途是当对象被垃圾回收器回收时可以接收到对应的通知。Java中使用PhantomReference实现了虚引用直接内存中为了及时知道直接内存对象不再使用从而回收内存使用了虚引用来实现。 ⚫终结器引用指的是在对象需要被回收时终结器引用会关联对象并放置在Finalizer类中的引用队列中在稍后由一条由FinalizerThread线程从队列中获取对象然后执行对象的finalize方法在对象第二次被回收时该对象才真正的被回收。在这个过程中可以在finalize方法中再将自身对象使用强引用关联上但是不建议这样做。