【发布时间】:2015-09-07 13:21:54
【问题描述】:
System类和Runtime类都有gc()方法,System类的gc()方法调用Runtime的方法。
public static void gc() {
Runtime.getRuntime().gc();
}
根据运行时类中 gc() 的 Java 代码文档
调用此方法表明 Java 虚拟机花费精力回收未使用的对象,以使它们当前占用的内存可用于快速重用。当控制从方法调用返回时,虚拟机已尽最大努力回收所有丢弃的对象。
Runtime.getRuntime().gc() 被调用时有什么特别的事情发生吗?
如果我调用它而不调用它会发生什么?
我已经知道了什么?
调用 gc() 时不要立即调用垃圾收集器,当垃圾收集应该发生时它由 jvm 决定。
编辑
我想了解为什么gc() 在 Java8 中仍然存在。其他线程上的讨论没有被接受的答案并且很老。
【问题讨论】:
-
"从不使用 gc()" (c)
-
我已经编辑了我的问题。 @Suvitruf Thnx 寻求建议。你能告诉我如果我使用它会有什么不同吗?
-
它们是完全不同的问题,不重复,帖子通常要求 gc(),这篇帖子询问 java8 中的变化。
-
好吧,那么认为 java8 发生了变化的原因是什么?
-
我说的不是没有用例的方法,而是你不会使用的方法。像 JRE 这样大的库有很多特殊用途的方法,很多开发人员找不到它们的用例。这并不意味着根本没有用例。不过,我猜你不会用,例如
Runtime.halt(int)
标签: java garbage-collection java-8