У нас есть Java-приложение, где ближе к последней части кода мы написали эти строки
Runtime runtime = Runtime.getRuntime();
long memory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("\n\nUsed memory is bytes: " + memory);
Что мы замечаем, так это то, что с течением времени верхняя часть показывает увеличение в столбце памяти (%) для приложения, но значения java-памяти (из переменных времени выполнения) показывают колебания вверх и вниз? Итак, чему мы должны следовать, чтобы определить точное использование памяти? Я намерен определить, есть ли утечка памяти в моем приложении?
Когда JVM запускается, она забирает часть памяти из операционной системы. Это объем памяти, который вы видите в таких инструментах, как ps и top.
Затем ваши приложения начинают использовать эту память: это память, которую вы видите с помощью своего кода и таких инструментов, как jstat.
Поэтому, если вы хотите отладить утечку памяти внутри своего приложения, вы не хотите использовать top или ps.