可作为GC Root的对象
在Java虚拟机中判断一个对象是否可以被回收,有一种做法叫可达性分析算法,也就是从GC Root到各个对象,如果GC Root到某个对象还有可达的引用链,那么这个对象就还不能被回收,否则就等着被收割吧。这里既然提到了GC Root,那么哪类对象可以作为GC Root呢,这是一个在面试中经常被问到的问题。《深入理解Java虚拟机》一书中是这么说的,一下几种对象可以作为GC Root:虚拟机栈中的引用
·
在Java虚拟机中判断一个对象是否可以被回收,有一种做法叫可达性分析算法,也就是从GC Root到各个对象,如果GC Root到某个对象还有可达的引用链,那么这个对象就还不能被回收,否则就等着被收割吧。
这里既然提到了GC Root,那么哪类对象可以作为GC Root呢,这是一个在面试中经常被问到的问题。
《深入理解Java虚拟机》一书中是这么说的,一下几种对象可以作为GC Root:
- 虚拟机栈中的引用对象
- 方法区中类静态属性引用的对象
- 方法区中常量引用对象
- 本地方法栈中JNI引用对象
大概就是以上几种,笔者记性不好,看了好几次都记不住,好几次面试都在这个问题上栽了跟头。不说了,都是泪,/(ㄒoㄒ)/~~
更多推荐
已为社区贡献8条内容
所有评论(0)