Основное резюме вопроса: Как мне лучше всего оптимизировать выделение памяти, чтобы выделить столько памяти DLL, к которой я обращаюсь через JNI, возможный? Что я должен стремиться минимизировать, что я должен стремиться максимизировать и т. Д.
СИСТЕМА: Запуск JBoss 6 как службы Windows 32 в 32-разрядной системе с 4 ГБ ОЗУ. Я понимаю, что существуют максимальные ограничения на память для Java Heap. JVM - это JRE1.6.0_26
СЕРВИС: Установленное под JBoss веб-приложение, которое получает запросы от клиентов; каждый запрос вызывает встроенную библиотеку C ++ через JNI для обработки файла изображения тем или иным способом.
ПРОБЛЕМА: Иногда с большими или некоторыми (не всеми) образами LZW-сжатия вызывающий класс java получает сообщение о том, что DLL испытала истощение глобальной памяти и не смогла завершить запрошенный процесс.
На сервере больше ничего не запущено, кроме основных процессов Windows.
Текущие настройки памяти сервера приложений JBOSS следующие, но могут быть чрезмерными:
-Xms1024m -Xmx1024m -Xss1024k -XX: MaxPermSize = 128m
Я пытаюсь определить наилучшие настройки памяти, чтобы выделить как можно больше ресурсов в JNI DLL, насколько я понимаю, JNI не использует память, выделенную для Java Heap.
Я прочитал их, но не нашел их полезными для ответа на свой вопрос:
Java JNI: распределение / разделение памяти
Можно ли использовать jconsole для выявления утечек памяти в объектах JNI C ++?
Два предоставленные в настоящее время ответы не касаются основного вопроса.
Текущая память сервера JBoss после одной недели с параметрами JVM, установленными, как указано выше (TaskManager указывает процесс java.exe на 750 672 КБ)
Total Memory Pools: 5
Pool: Code Cache (Non-heap memory)
Peak Usage : init:2359296, used:7317312, committed:7438336, max:50331648
Current Usage : init:2359296, used:7306496, committed:7438336, max:50331648
|---------| committed:7.09Mb
+---------------------------------------------------------------------+
|/////////| | max:48Mb
+---------------------------------------------------------------------+
|---------| used:6.97Mb
Pool: PS Eden Space (Heap memory)
Peak Usage : init:268500992, used:354811904, committed:354811904, max:355991552
Current Usage : init:268500992, used:270153472, committed:354091008, max:354156544
|--------------------------------------------------------------------| committed:337.69Mb
+---------------------------------------------------------------------+
|///////////////////////////////////////////////////// || max:337.75Mb
+---------------------------------------------------------------------+
|----------------------------------------------------| used:257.64Mb
Pool: PS Survivor Space (Heap memory)
Peak Usage : init:44695552, used:44694896, committed:78643200, max:78643200
Current Usage : init:44695552, used:0, committed:1835008, max:1835008
|---------------------------------------------------------------------| committed:1.75Mb
+---------------------------------------------------------------------+
| | max:1.75Mb
+---------------------------------------------------------------------+
| used:0b
Pool: PS Old Gen (Heap memory)
Peak Usage : init:715849728, used:123671968, committed:715849728, max:715849728
Current Usage : init:715849728, used:104048648, committed:715849728, max:715849728
|---------------------------------------------------------------------| committed:682.69Mb
+---------------------------------------------------------------------+
|////////// | max:682.69Mb
+---------------------------------------------------------------------+
|---------| used:99.23Mb
Pool: PS Perm Gen (Non-heap memory)
Peak Usage : init:16777216, used:91989664, committed:134217728, max:134217728
Current Usage : init:16777216, used:90956472, committed:90963968, max:134217728
|----------------------------------------------| committed:86.75Mb
+---------------------------------------------------------------------+
|//////////////////////////////////////////////| | max:128Mb
+---------------------------------------------------------------------+
|----------------------------------------------| used:86.74Mb