首页 > 试题广场 >

如果对象的引用被置为null,垃圾收集器什么时候释放对象占用

[单选题]

如果对象的引用被置为null,垃圾收集器什么时候释放对象占用的内存? 

  • 立即释放
  • 方法调用结束后释放
  • 下一个垃圾回收周期
  • 不确定
1.jvm gc判断对象是根据可达性分析方法判断的.
2.GC ROOT 可达对象.
  1.虚拟机栈中引用的对象.
  2.方法区静态属性,常量引用的对象.
  3.JNI引用的对象.
3.对象赋值为null,是将栈帧局部变量的slot记录除掉.,即虚拟机栈中引用的对象.
4.gc是在全局safepoint或安全区域,对所有线程设置中断位主动中断线程,并对垃圾对象进行回收.
5.终结器中对象可以进行自救.
发表于 2020-02-13 13:08:48 回复(0)
不会立即释放对象占用的内存。 如果对象的引用被置为null,只是断开了当前线程栈帧中对该对象的引用关系,而 垃圾收集器是运行在后台的线程,只有当用户线程运行到安全点(safe point)或者安全区域才会扫描对象引用关系,扫描到对象没有被引用则会标记对象,这时候仍然不会立即释放该对象内存,因为有些对象是可恢复的(在 finalize方法中恢复引用 )。只有确定了对象无法恢复引用的时候才会清除对象内存
编辑于 2018-12-13 20:30:59 回复(0)