首页 > 试题广场 >

下面关于垃圾收集的说法正确的是

[单选题]
下面关于垃圾收集的说法正确的是
  • 一旦一个对象成为垃圾,就立刻被收集掉。
  • 对象空间被收集掉之后,会执行该对象的finalize方法
  • finalize方法和C++的析构函数是完全一回事情
  • 一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此

回收之前执行

发表于 2019-08-26 08:39:27 回复(0)
感觉D也是错的,它讲的是引用计数法,但是现在JVM使用的是可达性分析法;引用计数法解决不了循环引用的问题,D的描述也有问题;
发表于 2019-10-09 17:51:20 回复(0)
1、在Java中,当一个对象的引用不存在时,即该对象会被认为是不再需要的,其所占用的内存会被释放回收。
2、Java垃圾回收可以不用进行显式撤销对象,他会在程序运行过程中择机自动发生,不会因为一个或几个对象不再使用而发生。
3、在C++中,使用delete运算符来显示的释放动态分配的对象的内存,所以和析构函数还是有区别的。
4、finalize方法是确保一个对象在被回收之前,要释放该对象占有的某些资源(例如文件句柄)。
所以选D。
编辑于 2019-09-21 14:25:09 回复(0)
finalize()与C++中的析构函数不是对应的。C++中的析构函数调用的时机是确定的(对象离开作用域或delete掉),但Java中的finalize的调用具有不确定性.
发表于 2019-10-09 15:31:55 回复(0)
finalize方法在回收前执行,用来释放对象的资源空间
发表于 2019-10-23 20:22:13 回复(0)
例如主线程无引用指向,但因为是垃圾回收根对象,所以不会被回收
发表于 2019-09-24 17:16:20 回复(0)