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.