Изменение размера прямой буферной памяти

У меня есть приложение, работающее на Websphere 8.5, я знаю, что объем памяти кучи этой конкретной JVM был увеличен в прошлом. Объем выделенной памяти сейчас составляет 5,6 ГБ, но у нас есть проблемы с памятью, связанные с памятью прямого буфера, и теперь нам необходимо изменить ее размер. Я вижу, как эта проблема происходит в процессе мониторинга, поэтому я не вижу размера прямой памяти.

Мои вопросы: есть ли правильный размер для прямой памяти в соответствии с размером памяти кучи Java? Допустим, по крайней мере X МБ для каждого X ГБ.

Какое значение по умолчанию для параметра XX:MaxDirectMemorySize?

Что еще я должен рассмотреть перед изменением этой опции?

2 ответа

Решение

В документе (для IBM Java 7) сказано, что по умолчанию он неограничен: https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.win.70.doc/diag/appendixes/cmdline/xxmaxdirectmemorysize.html

Я думаю, вам следует подумать, не хотите ли вы позволить приложению, использующему прямую память, выйти из строя, и в то же время разрешить другую работу на сервере. Установка прямого объема памяти приведет только к быстрому сбою приложения, поскольку значение по умолчанию не ограничено.

Согласно документации Oracle

http://docs.oracle.com/cd/E15289_01/doc.40/e15062/optionxx.htm

по умолчанию ограничений нет

Согласно документации IBM

https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.win.70.doc/diag/appendixes/cmdline/xxmaxdirectmemorysize.html

оно начинается с малого и медленно растет.

Скорее всего, у вас есть утечка памяти, которая должна быть исследована.

Другие вопросы по тегам