java - java中如何销毁一个对象?

标签 java garbage-collection finalize

我在面试中遇到了这个问题,有以下选项:

How to destroy an object in java?

a. System.gc();  
b. Runtime.getRuntime.gc();  
c. object.delete();  
d. object.finalize();  
e. Java performs gc by itself, no need to do it manually.
  1. 答案应该是 e?

  2. 如果 e 不存在怎么办?然后 ? 显然 c 不是答案。 a 和 b 将为整个应用程序执行 gc(问题需要一个对象)。 我认为它是 d 因为 Finalize() 在 gc 之前调用(但是在 Finalize gc 之后是否有必要调用?)或者我错了? e 必须在那里回答这个问题吗?

最佳答案

答案 E 是正确答案。如果 E 不存在,您很快就会耗尽内存(或)没有正确答案。

对象应该无法访问才有资格进行 GC。 JVM 会进行多次扫描,并将对象从一代移动到另一代,以确定 GC 的资格,并在对象不可达时释放内存。

关于java - java中如何销毁一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50750834/

相关文章:

java - 如何重写类对象本身的finalize()方法?

java - Object.finalize() 方法忽略抛出的异常

java - Jackrabbit 存储库位置

java - 预定执行器服务 : when shutdown should be invoked?

java - WebSocket EndPoints 注释中编码器列表或解码器列表的用例是什么?

java - 如何找到哪些对象产生的垃圾最多

c# - C#'s ` yield return` 为我制造了很多垃圾。有救吗?

java - 返回表达式总是被计算出来,还是可以被编译器优化掉?

java - HTTP 过滤器中的同步块(synchronized block)

java - Finalize 方法中的位图回收无法正常工作