Что ж, у нас есть веб-приложение, работающее на JBoss, и у нас возникает ошибка «OutOfMemory» при попытке вставить много строк в несколько таблиц базы данных postgres.
Это полная среда для этой ошибки:
* JBoss 4.3.x GA
* Java 1.6.0
* Hibernate 3.0
* postgreSQL-8.3 (драйвер)
О фактической среде работы с кодом:
* Важным моментом является то, что мы анализируем огромное количество XML-документов, каждый из которых загружается отдельно с определенного URL-адреса (1 URL = 1 XML). Мы достигаем этого, имея EJB, который распределяет сгенерированные URL-адреса в очередь, затем пул MDB соединяется с помощью потоков и генерирует документы (обратите внимание, что нам фактически пришлось увеличить объем стековой памяти из-за размера документов XML, и мы застрял с необходимостью получить весь документ в одном потоке), как только документ сгенерирован, он переходит в другую очередь, где слушает другой пул MDB.
Эти MDB анализируют документ, сохраняя информацию в нескольких объектах (не менее 5), которые затем сохраняются в БД (обратите внимание, что управление транзакциями установлено на "BEAN" и начинается и фиксируется во время каждой работы MDB. ). Последовательная обработка URL-адресов невозможна из-за количества обрабатываемых URL-адресов, это может занять около 2 месяцев или около того ... lol
Проблема в том, что ... мы анализируем и храним около 200 URL-адресов или около того и начинаем выводить из памяти ошибку для postgreSQL.
Есть идеи ??
Заранее спасибо !!
ТАКЖЕ: Может быть полезно знать, что эта ошибка не появлялась раньше (я проанализировал несколько тысяч этого XML-кода до этого), только генерация документов и анализ некоторых из них в некоторые сущности, по-видимому, не приносили беда. Проблемы начались, когда мы начали разбирать все больше и больше документов на соответствующие им объекты. (Подобно тому, как одна сущность имеет список «функций» [другая сущность анализируется из того же xml])