社区
Java SE
帖子详情
java 弱引用weakreference GC问题
xiaoge0103
2019-04-25 11:33:46
假如正在使用一个弱引用时,JVM 产生GC,那么这个弱引用会不会被回收,如果被回收了我该怎么做?
...全文
90
回复
打赏
收藏
java 弱引用weakreference GC问题
假如正在使用一个弱引用时,JVM 产生GC,那么这个弱引用会不会被回收,如果被回收了我该怎么做?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java
弱引用
Weak
Reference
理解,这一篇就够了!
什么是
弱引用
如果一个对象具有
弱引用
(
Weak
Reference
),那么当
GC
线程扫描的过程中一旦发现某个对象只具有
弱引用
而不存在强引用时不管当前内存空间足够与否
GC
都会回收它的内存。由于垃圾回收器是一个优先级较低的线程,所以不一定会很快发现那些只具有
弱引用
的对象。为了防止内存溢出,在处理一些占用内存大而且生命周期较长的对象时候,可以尽量使用软引用和
弱引用
。 抽象化具体 我们通过学校、老师、代课老师的关系来介绍 // 学校类 继承了
Weak
Reference
,引用对象是Teacher public clas
Java
弱引用
(
Weak
Reference
)的一点认识
Java
弱引用
(
Weak
Reference
)的一点认识 首先我们看下虚引用的定义 "虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。 这个仅字很关键,说明虚引用的目的是为了当对象引用为null时,能及时的被垃圾回收器回收。代码示例如下: String value = new String("abc");
Weak
Reference
<String> abc = new
Weak
R
Java
中的
弱引用
Weak
Reference
详解
最近再看ThreadLocal源码,其中内部类ThreadLocalMap中的Entry类继承了
Weak
Reference
,其表示key的ThreadLocal对象是通过弱应用指向,如果外部没有强引用对象指向ThreadLocal对象的时候就会被
GC
回收掉,不论当前的内存空间是否足够,这个对象都会被回收 一、
Weak
Reference
源码,其中只有两个构造函数 public class
Weak
Reference
<T> extends
Reference
<T> { //(1).
Java
弱引用
(
Weak
Reference
)的理解与使用
而复杂一点的情况,比如使用cache,因为cache的对象正是程序运行需要的, 那么只要程序正在运行, cache中的引用就不会被
GC
,那么随着cache中的引用越来越多,
GC
无法回收的对象也越来越多, 无法被自动回收,此时就必须有开发者来进行处理回收,显然也违背了
java
自动回收机制。
Java
对于简单的情况, 手动置空是不需要程序员来做的, 因为在
java
中, 对于简单对象, 当调用它的方法执行完毕后, 指向它的引用会被
GC
回收,Person p = new Person("张三",18,"男");
弱引用
Weak
Reference
作用与使用场景
在分析threadLocal源码时,发现有使用
弱引用
Weak
Reference
,在之前总结
GC
的时候,也曾简单介绍
java
引用类型(《jvm
GC
算法类型》第6节),本文在详细总结下
Weak
Reference
的使用方法。
java
4种引用类型: 强:A a=new A(); 此时引用a强引用对象A;不会被
GC
软:Soft
Reference
.
java
,在内存不够时引用对象会被
GC
; 弱:
Weak
Reference
.
java
,每次
GC
都会被回收; 虚:Phantom
Reference
.
java
,每次
GC
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章