Java对象的四种引用类型

在Java中,对象的引用类型分为四种:强引用、软引用、弱引用、虚引用

 

强引用:正常情况下声明的对象皆为强引用,在强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会垃圾回收。

 

软引用:软引用一般被作为缓存使用,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内存来决定是否对软引用进行回收,如果内存比较紧张,虚拟机则会回收软引用对应的空间。

 

弱引用:与软引用类似,不同的是,弱引用在进行垃圾回收时,是一定会被回收掉的。

 

虚引用:虚引用不会决定对象的生命周期,如果对一个对象仅持有虚引用,则是没有任何意义的,虚引用必须和引用队列联合使用。虚引用主要用来跟踪对象被虚拟机回收的活动,当虚拟机回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把该对象加到引用队列中(在finalize之后),之后可以通过判断引用队列中是否有对象来得知对象即将被回收。

 

引用类型 被垃圾回收时间 用途 生存时间
强引用 从来不会 一般状态 JVM停止
软引用 在内存不足时 缓存 内存不足时
弱引用 在垃圾回收时 缓存 一次回收过后
虚引用 跟踪回收活动

 

你可能感兴趣的:(个人专栏,java,jvm,jdk,缓存)