У меня есть веб-приложение, развернутое в Oracle App Server 10.1.3, в oc4j, запущенном с начальной кучей 1 ГБ и максимальной кучей 2 ГБ, на RHEL на 32-разрядной версии, настроенной на просмотр 32 ГБ ОЗУ. В последнее время я столкнулся с ошибками OutOfMemory, поэтому я настроил приложение для создания дампов кучи на OutOfMem. Итак, у меня есть 4-5 дампов кучи, каждый размером не более 1,2 Гб (то есть на 800 Мб меньше максимального размера кучи). Кроме того, выполнение свободного на машине в среднем часов показывает около 20 ГБ свободной оперативной памяти.
Значит ли это, что приложение пытается выделить 800 Мб за один раз? Или если есть 2 или более потока, которые пытаются выделить память одновременно, они оба терпят неудачу, даже если, скажем, есть память для каждого, но не для суммы обоих? Может ли быть пб с линуксовой машиной, может она не может отдать память на джаву? Может быть, память фрагментирована, может быть, конфигурация, позволяющая 32-битной машине видеть 32 Гб оперативной памяти, имеет пб?
(Должен отметить, что приложение в последнее время не менялось, но на этой машине недавно был развернут новый oc4j и новое приложение, которое съедает 1-2 г оперативной памяти)