昨天参加大唐电信的笔试题有个题没弄明白,求教各位大神
1、 关于垃圾回收,哪个正确()A、 一再对象不再引用,就会被GC立即回收。
B、 GC是自动执行的,无须编程实现。
C、 Java可以手动释放对象的内存。
D、 对象被回收时,必然会执行该对象的finalize方法
我选的c 回来百度查有说可以的也有说不可以的。到底能不能手动释放?是不是赋为null然后调用gc()?感觉B也没错呢? --------------------编程问答-------------------- 我觉得也是c,不过我觉得b不对,就是垃圾回收也是在底层编程实现的,不编程能垃圾回收,我觉得不大可能。。。。 --------------------编程问答-------------------- B感觉有歧义啊 是不需要程序员编写代码还是java语言不需要代码实现。。。
C那个手动释放是咋释放的 感觉调用System.gc()不行呢 --------------------编程问答-------------------- 我看B就是答案
cg不会立即回收对象的 空闲或需要才会收
java手动管不了gc即使手动调用
d也是不对的finalize并不完全靠谱。 --------------------编程问答-------------------- 程序员可以调用GC,但是什么时候执行就不是程序员可以控制的了
--------------------编程问答-------------------- 显然是B啊。 --------------------编程问答-------------------- 你什么时候参加的笔试,不是11月3号才开始笔试么 --------------------编程问答-------------------- 我看答案应该是B,这里所说的无需编程实现,是应用层的程序员不需要编写代码控制,JVM底层已经实现了,这个和C,C++的主要区别 --------------------编程问答-------------------- C 的解释是, 你可以提醒系统改收垃圾了,具体系统收不收,看GC的心情。
我顶B。 --------------------编程问答-------------------- 答案应该是B,D --------------------编程问答-------------------- Java的垃圾回收机制是Java虚拟机提供的能力,用于在空闲时间以不定时的方式动态回收无任何引用的对象占据的内存空间。需要注意的是:垃圾回收回收的是无任何引用的对象占据的内存空间而不是对象本身。
System.gc()
Runtime.getRuntime().gc()
上面的方法调用时用于显式通知JVM可以进行一次垃圾回收,但真正垃圾回收机制具体在什么时间点开始发生动作这同样是不可预料的,这和抢占式的线程在发生作用时的原理一样。 --------------------编程问答-------------------- 除
补充:Java , Java相关