Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Runtime.getRuntime()

Возвращает объект Runtime текущей JVM: память, число процессоров, обработчики завершения.

Доступно с: Java 1.0

Синтаксис

public static Runtime getRuntime()

Возвращаемое значение

RuntimeЕдинственный объект Runtime этой программы.

Примеры

Процессоры и память (значения зависят от компьютера и настроек JVM):

void main() {
    Runtime rt = Runtime.getRuntime();
    long mb = 1024 * 1024;
 
    IO.println("Processors: " + rt.availableProcessors());
    IO.println("Max memory: " + rt.maxMemory() / mb + " MB");
    IO.println("Total: " + rt.totalMemory() / mb + " MB");
    IO.println("Free: " + rt.freeMemory() / mb + " MB");
}

Результат:

Processors: 16
Max memory: 4080 MB
Total: 258 MB
Free: 213 MB

Занятая память — это totalMemory() - freeMemory(). Она растёт, когда программа создаёт объекты:

long usedMb() {
    Runtime rt = Runtime.getRuntime();
    return (rt.totalMemory() - rt.freeMemory()) / (1024 * 1024);
}
 
void main() {
    IO.println("Before: " + usedMb() + " MB");
    int[] big = new int[50_000_000];
    IO.println("After: " + usedMb() + " MB");
    IO.println(big.length);
}

Результат:

Before: 44 MB
After: 195 MB
50000000

Примечания

maxMemory() — предел кучи (задаётся ключом -Xmx, например java -Xmx512m Main.java), totalMemory() — сколько JVM уже взяла у системы, freeMemory() — свободная часть из взятого. Числа приблизительные: сборщик мусора освобождает память, когда сам решит, а System.gc() — лишь просьба. availableProcessors() удобен для выбора размера пула потоков. addShutdownHook(thread) регистрирует код, который выполнится при завершении программы.

См. также

  • System.nanoTime() — Возвращает показания точного таймера в наносекундах — для замера длительности. Рядом — currentTimeMillis().
  • System.exit() — Немедленно завершает программу с заданным кодом выхода.
  • Thread — Поток выполнения: позволяет программе делать несколько дел одновременно.

Вопросы и ответы по теме

В учебнике

  • Память и сборка мусора — Как Java работает с памятью — стек и куча, ссылки, сборка мусора, утечки памяти через статические коллекции и слушатели, OutOfMemoryError и StackOverflowError, сборщики G1 и ZGC.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.