У меня есть приложение Java, работающее в Linux с Xmx, установленным на 1200M
Когда я проверяю процесс в ТОПе, я вижу цифры вроде:
VIRT = 1412 м
RES = 237 м
SHR = 58 м
Внутри Java-приложения я печатаю Runtime.getRuntime (). TotalMemory () каждую минуту, и там отображается число:
totalMemory () = 108M
Почему такая большая разница между значениями RES и totalMemory ()?
Мое понимание (что может быть неправильным) - totalMemory () - это память, используемая прямо сейчас в куче. RES - фактическая оперативная память, используемая процессом.
В качестве обновления:
Да, я ожидал бы RES> totalMemory () - но разница здесь составляет 237 МБ - 108 МБ = 129 МБ. Поэтому, если кто-то спросит меня, какой максимальный объем памяти может использовать мое Java-приложение, оно должно составлять 1200 МБ + «что-то» - вопрос в том, как узнать, что «что-то» .. это 150 МБ? 200MB? 300MB