如何深入理解JAVA中的强引用机制?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1018个文字,预计阅读时间需要5分钟。
定义+强引用是使用最普遍的引用。如果一个对象具有强引用,那么垃圾回收器即使发现内存不足(OutOfMemoryError),也不会回收它。说明+不要被这个强字吓到,实际上强引用很危险。
定义
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器宁愿抛出OOM(OutOfMemoryError)也不会回收它。
说明
不要被这个强字吓到,以为这个引用就很厉害,其实强引用就是程序中使用的一般引用类型。举个简单的栗子:
String s = new String("Hello Frank!");
强可达
如果一个对象与GC Roots之间存在强引用,则称这个对象为强可达(strong reachable)对象。
当你声明一个变量并指向一个实例的时候,其实就是在创造一个强引用。那么,既然叫强引用,它“强”在哪里呢?
这主要体现在JVM进行GC的时候,只要对象有强引用与其关联,就绝对不会对它进行回收,即使已经内存不足了也不会收回有强引用指向的对象。
如果你不需要使用某个对象了,可以将相应的引用设置为null,消除强引用来帮助垃圾回收器进行回收。因为过多的强引用也是导致OOM的罪魁祸首。
本文共计1018个文字,预计阅读时间需要5分钟。
定义+强引用是使用最普遍的引用。如果一个对象具有强引用,那么垃圾回收器即使发现内存不足(OutOfMemoryError),也不会回收它。说明+不要被这个强字吓到,实际上强引用很危险。
定义
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器宁愿抛出OOM(OutOfMemoryError)也不会回收它。
说明
不要被这个强字吓到,以为这个引用就很厉害,其实强引用就是程序中使用的一般引用类型。举个简单的栗子:
String s = new String("Hello Frank!");
强可达
如果一个对象与GC Roots之间存在强引用,则称这个对象为强可达(strong reachable)对象。
当你声明一个变量并指向一个实例的时候,其实就是在创造一个强引用。那么,既然叫强引用,它“强”在哪里呢?
这主要体现在JVM进行GC的时候,只要对象有强引用与其关联,就绝对不会对它进行回收,即使已经内存不足了也不会收回有强引用指向的对象。
如果你不需要使用某个对象了,可以将相应的引用设置为null,消除强引用来帮助垃圾回收器进行回收。因为过多的强引用也是导致OOM的罪魁祸首。

