题目分析:暂无
1. 回答
判断一个对象是否应该被回收,主要是看其是否还有引用。判断对象是否存在引用关系的方法包括引用计数法以及root根搜索方法。
- 引用计数法:是一种比较古老的回收算法。原理是此对象有一个引用,即增加一个计数,删除一个引用则减少一个计数。垃圾回收时,只需要收集计数为0的对象。此算法最致命的是无法处理循环引用的问题。
- root根搜索方法:root搜索方法的基本思路就是通过一系列可以做为root的对象作为起始点,从这些节点开始向下搜索。当一个对象到root节点没有任何引用链接时,则证明此对象是可以被回收的。以下对象会被认为是root对象:
- 栈内存中引用的对象
- 方法区中静态引用和常量引用指向的对象
- 被启动类(bootstrap加载器)加载的类和创建的对象
- Native方法中JNI引用的对象。
2. 题目拓展
- 什么是对象的引用?
new一个对象的时候,在内存里会给它分配一个内存空间,这个空间就像我们的住房有地址一样有个地址,对象引用就是当使用这个对象的时候,使用内存地址代替,JVM会根据地址找到对象。
https://www.cnblogs.com/zmy-520131499/p/11165851.html