-
Notifications
You must be signed in to change notification settings - Fork 784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-04-12:回答一下什么是强、软、弱、虚引用以及它们之间的区别? #27
Comments
|
|
|
|
强引用如果一个对象具有强引用,那么垃圾回收器不会回收该对象,当内存空间不足时,会 OOM,只有当这个对象没有被引用时才有可能被回收。如果想中断会回收强引用可以显示的将引用值置空,这样 JVM 就会在合适的时机,进行垃圾回收; 软引用软引用用来描述一些还有用但并非必须的对象,最长用于实现内存敏感的缓存;当内存空间足够时,垃圾回收器就不会回收它;当内存空间不足时就会回收它;JVM 优先回收长时间闲置不用的软引用对象,对那些刚刚构建或者刚刚使用过的“新”引用会尽可能的保留;如果回收后还没有足够的内存才会 OOM;只要垃圾回收器没有回收该对象,该对象就可以被使用; 弱引用弱引用和软引用相似,只不过生命周期更短了,它只能生存到下一次垃圾回收之前;当垃圾回收器扫描到只有弱引用的对象时,无论当前内存是否足够,都会回收它;
虚引用虚引用和软引用,弱引用不同,它并不影响对象的生命周期,如果一个对象被虚引用关联,那么他跟没有引用与之关联一样,在任何时候都有可能被垃圾回收器回收;
附表格:
|
1、强引用:使用最普遍的引用。如果一个对象具有强引用,垃圾回收器绝不会回收它。 2、软引用:如果内存空间足够,垃圾回收器就不会回收软引用对象;如果内存空间不足,就会回收软引用对象。 3、弱引用:弱引用对象比软引用对象生命周期更短,垃圾回收器扫描时一旦发现弱引用对象,就会回收它。垃圾回收器优先级不高,所以不一定很快发现弱引用对象。 4、虚引用:虚引用对象就和没有被引用一样,任何时候都可能被垃圾回收器回收。一般用于跟踪对象被垃圾回收器回收的过程,如开源库LeakCanary。 |
顺便列举一下有哪些使用场景? |
No description provided.
The text was updated successfully, but these errors were encountered: