Как я могу оптимизировать использование памяти JVM?
Я хотел бы спросить, если кто-нибудь здесь знает способ, как оптимизировать использование памяти JVM? Мы используем оболочку Java-сервиса (YAJSW), которая вызывает JVM, а физическая память используется около 40 МБ. Я хочу уменьшить это, скажем, 5-10 МБ. Как мне этого добиться?
Пока у меня есть только следующая конфигурация:
java =-Xmx1024m
Я также попробовал это:
java =-Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:SurvivorRatio=2 -XX:PermSize=256m -XX:MaxPermSize=256m
Но эти параметры конфигурации не имеют никакого значения. Каковы будут правильные настройки конфигурации для этого? или, что еще я должен сделать, чтобы оптимизировать это?
Заранее благодарю за ваши ответы.
2 ответа
Вы говорите о резидентной памяти или виртуальной? На моей машине простой while(true);
в main
больше ничего уже не получает мне 10 МБ резидентной памяти, в основном из-за отображенных в память библиотек r/o (libc, libm, librt, libpthread...) и jars. Уменьшение, если вообще возможно, дополнительного объема памяти, или до 10 МБ в любом нетривиальном приложении, будет означать только больше подкачки, тем самым уменьшая скорость.
Виртуальная память, с другой стороны, составляет 1,1 ГБ на моей машине, которая может быть уменьшена в случае необходимости, но зачем это делать? Неиспользованная виртуальная память ничего не стоит.
Изменить: Кроме того, вы можете посмотреть на другие параметры виртуальной машины HotSpot, особенно MaxHeapFreeRatio.
Документация для YAJSW гласит:
Требования к памяти для Wrapper
Гибкость YAJSW имеет свою цену. Использование Java для процесса оболочки имеет много преимуществ. Однако мы платим java цену за более высокий объем памяти. В то время как оболочке JSW требуется всего несколько килобайт памяти, минимальное требование к виртуальной памяти YAJSW составляет 90 МБ и 40 МБ физической памяти. Значение варьируется в зависимости от ОС и функций.
Если ваше приложение может работать в пределах 32-битных ограничений памяти, вы можете использовать версию Tanuki для сообщества, поскольку она занимает меньше места.