java - Runtime.getRuntime().gc() 在 Java 8 中继续存在,有什么用处或者有什么区别吗?

标签 java garbage-collection java-8

System 类和 Runtime 类中都有 gc() 方法,System 类的 gc() 方法调用 Runtime 的方法。

public static void gc() {
        Runtime.getRuntime().gc();
    }

根据 Runtime 类中 gc() 的 Java 代码文档

Calling this method suggests that the Java virtual machine expend effort toward recycling unused objects in order to make the memory they currently occupy available for quick reuse. When control returns from the method call, the virtual machine has made its best effort to recycle all discarded objects.

调用 Runtime.getRuntime().gc() 时会发生什么特殊情况吗? 如果我调用它和不调用它会发生什么?

我已经知道什么?

调用gc()不会立即调用垃圾收集器,并且在垃圾收集应该发生时由jvm调用。

编辑

我想了解为什么 Java8 中仍然存在 gc()。其他线程上的讨论没有接受的答案,而且已经很老了。

最佳答案

也许您正在写a benchmarking library在运行基准测试时尽量减少 GC 的干扰对您来说非常重要。

所以你可能想要to call gc() between runs (因为您正在编写低级内容,并且您知道实际上您的目标 JRE 将在调用 gc() 时实际运行 GC)...

关于java - Runtime.getRuntime().gc() 在 Java 8 中继续存在,有什么用处或者有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32439777/

相关文章:

java - 构造函数 - 执行顺序

java - JPA使用flush来触发异常并停止执行

c#终结器抛出异常?

java - JVM内存错误统计

Java 8 按属性区分

java - 关闭 HikariPool 中的连接

java - 在内部私有(private)类中包含非私有(private)数据成员是否有效?

java - 跟踪 Java 中的内存泄漏/垃圾收集问题

intellij-idea - Java8 通过调用 "cannot resolve constructor"报告 "::new"

Java 8 : Converting Map<String, 列表<字符串>>到映射<字符串,字符串[]>