【问题标题】:When we request GC for information or request to clean GC. Does it clean to all or it cleans by whom it was executed?当我们要求 GC 提供信息或要求清洁 GC 时。它是否对所有人都进行了清理,或者它是由谁执行的?
【发布时间】:2012-03-23 10:57:41
【问题描述】:

在 Java 中,假设运行了 3 个 java 应用程序。

a) 首先,我的应用程序正在运行

b) 其次,不是由我运行的 java 应用程序制作的

c) 第三,不是我做的 java 其他运行的应用程序

d) 第四,我运行以下方法的另一个应用程序:

  public static void printGCStats() {

    long totalGarbageCollections = 0;
    long garbageCollectionTime = 0;
    for(GarbageCollectorMXBean gc : ManagementFactory.getGarbageCollectorMXBeans()) {

        long count = gc.getCollectionCount();

        if(count >= 0) {
            totalGarbageCollections += count;
        }

        long time = gc.getCollectionTime();

        if(time >= 0) {
            garbageCollectionTime += time;
        }
    }

    System.out.println("Total Garbage Collections: "
        + totalGarbageCollections);
    System.out.println("Total Garbage Collection Time (ms): "
        + garbageCollectionTime);

  }

问题是:d) 将仅显示 d 垃圾收集详细信息,或者它将显示所有内容,包括 a + b + c +d ?一旦我请求 System.gc 或 runtime.gc 它会请求单个还是全部?

【问题讨论】:

  • 注意:这很可能取决于所使用的JVM!

标签: java linux garbage-collection jvm


【解决方案1】:

每个 Java 进程都在单独的 JVM 中运行。每个 JVM 都有自己的堆,与其他 JVM 的堆分开。

您正在查看的统计信息仅适用于该进程。同样,System.gc() 仅适用于调用它的进程的堆。

【讨论】:

    猜你喜欢
    • 2011-03-17
    • 2016-08-26
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2020-04-21
    • 2011-01-03
    相关资源
    最近更新 更多