Почему после использования сборщика мусора свободной памяти стало меньше, чем раньше? Runtime.getRuntime (). G c () в Java - PullRequest
0 голосов
/ 17 апреля 2020

Я учусь Java с книгой Java Полный справочник, одиннадцатое издание. Я видел этот пример и сравнивал результаты. Я не могу объяснить, почему результаты отличаются друг от друга. Моя Java версия - 13. Мой уровень Engli sh плохой, и я написал этот текст с переводом. Извините, если вы не поняли.

public class baseClass {
public static void main(String[] args) {
    Runtime gfg = Runtime.getRuntime();
    long memory1, memory2;
    Integer integer[] = new Integer[1000];

    // checking the total memeory
    System.out.println("Total memory is: "
            + gfg.totalMemory());

    // checking free memory
    memory1 = gfg.freeMemory();
    System.out.println("Initial free memory: "
            + memory1);

    // calling the garbage collector on demand
    gfg.gc();

    memory1 = gfg.freeMemory();

    System.out.println("Free memory after garbage "
            + "collection: " + memory1);

    // allocating integers
    for (int i = 0; i < 1000; i++)
        integer[i] = new Integer(i);

    memory2 = gfg.freeMemory();
    System.out.println("Free memory after allocation: "
            + memory2);

    System.out.println("Memeory used by allocation: " +
            (memory1 - memory2));

    // discard integers
    for (int i = 0; i < 1000; i++)
        integer[i] = null;

    gfg.gc();

    memory2 = gfg.freeMemory();
    System.out.println("Free memeory after  "
            + "collecting discarded Integers: " + memory2);
}
...