У меня есть система, которая не может обеспечить более 1,5 Гб для процесса Java.Таким образом, мне нужен точный способ указать настройки процесса Java, включая все виды памяти внутри Java и возможный разветвление.
Один конкретный java-процесс и система для иллюстрации моей проблемы:
Моя текущая среда - java 1.6.0_18 в Ubuntu Linux 9.10.
Я запускаю большой процесс java-сервера со следующимиПараметры JVM: "-Xms512m -Xmx1024m -XX: PermSize = 256m -XX: MaxPermSize = 512m"
Теперь команда "top" сообщает, что процесс использует память объемом 1,6 ГБ ...
Вопросы:
1 - как рассчитывается максимальное пространство, используемое процессом Java?Пожалуйста, предоставьте точную формулу, если это возможно.(Что-то вроде: max.heap + max.perm + стек + пространство jvm = максимальное пространство)
2 - каково печально известное поведение форка под linux в моем случае?Будет ли разветвленная JVM занимать дополнительные 1,6 ГБ (в результате чего будет использоваться 3,2 ГБ используемой памяти)?
3 - Какие параметры необходимо использовать, чтобы обеспечить абсолютное использование не более 1,5 ГБ в любое время?
спасибо
@ rancidfishbreath: "ulimit" гарантирует, что java не сможет занять больше указанного объема памяти.Моя цель - обеспечить, чтобы Java никогда не пытался это сделать.