Я хочу рассчитать использованную память кучи JVM. В примере приложения я сделал следующее.Расчет используемой памяти JVM
Размер кучи JVM как Xms = 200mb и Xmx = 200mb.
Проведенные вычисления, используя Java Runtime API. Это дало мне следующий результат для выборочной программы.
Продолжительность Общий объем памяти: 192413696
Продолжительность макс память: 192413696
время выполнения свободной памяти: 39734096
время выполнения доступной памяти = (макс - всего + свободный) = 39734096
Процент используемая память = 100 * (max-available)/max = 100 * (192413696- 39734096)/192413696 = 79,35%
ли другой расчет через JMX: java.lang: тип = Память (Использование MBean)
It gave me following output for the same program. Used memory : 127737896 Max memory : 201850880 Percentage of used memory = 100*(used/max) = 100* (127737896/201850880)= 63.28%
Не могли бы вы помочь мне с следующий?
В чем причина различия между использованием API JMX и Java Run time API?
Если я хочу знать память, занятую в моей куче JVM, которая является правильным подходом (точка 2 или точка 3). Мое намерение состоит в том, чтобы поднять оповещения, прежде чем из-за нехватки памяти для моей JVM.
У меня есть еще одно наблюдение. Когда я использую алгоритм CMS (с -Xms и -Xms, установленным на 32 ГБ, а доля занятости - до 70%), я мог видеть разницу между свободной памятью, вычисленной с использованием MBeans и java runtime freeMemory(). Когда я использовал G1, я не мог найти эту разницу (Mbeans и API времени выполнения дали такое же значение).
Вы можете найти [этот вопрос] (http://stackoverflow.com/q/790535/2032064) и [MemoryMXBean документация ] (https://docs.oracle.com/javase/7/docs/api/java/lang/management/MemoryMXBean.html) интересно. – Mifeet
Спасибо за информацию. Я буду проверять детали. –