Когда мы запрашиваем информацию о ГК или просим очистить ГК.Чистит ли он всех или очищает, кем был казнен? - PullRequest
0 голосов
/ 23 марта 2012

В 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, он запросит один или все из них?

1 Ответ

3 голосов
/ 23 марта 2012

Каждый процесс Java выполняется в отдельной JVM. Каждая JVM имеет свою собственную кучу, отдельную от куч других JVM.

Статистика, которую вы просматриваете, только для этого процесса . Точно так же System.gc() работает только с кучей процесса, который его вызвал.

...