每日一题(七)
题目:
jvm内存回收机制之对象的内存状态
分析:
根据被变量引用过程,分为三种状态:可达状态、可恢复状态和不可达状态
解答:
这三种状态的转换是对象在内存整个生命周期中所经历的三个阶段。
可达状态:对象创建之后,有一个以上的变量引用该对象。如果像
上图是引用的博客中的图片。
补充:
finalize()方法是java.lang.Object对象方法。jdk上这样描述该方法“ 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。”
有一点需要注意,对于任何给定对象,Java 虚拟机最多只调用一次 finalize 方法。也就是说如果在调用一次只后,恢复到可达状态,那么java虚拟机将不会再次调用finalize()方法。这点有点奇怪,对此留下进一步思考的余地。