Утечка памяти с JAXB - PullRequest
       11

Утечка памяти с JAXB

2 голосов
/ 26 мая 2010

Ошибка «Недостаточно памяти»:

Memory Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at org.apache.xerces.dom.CoreDocumentImpl.createElement(CoreDocumentImpl.java:564)

У меня есть отдельная Java-программа, которая извлекает данные из БД и создает файл XML с использованием DOM. Я получаю вышеуказанную ошибку, если извлеченные данные огромны, в моем случае это> 1 000 000 записей.

Я определил 2 ГБ в качестве размера кучи при вызове класса Java из unix.

Я пробовал это с JAXB, но все еще не достигло значительного улучшения.

Любые предложения, как улучшить код.

1 Ответ

6 голосов
/ 26 мая 2010

Вам, вероятно, следует избегать загрузки всего файла в память сразу. Для этого переключитесь с использования DOM на другую технологию, например SAX или StAX . Это потоковые API, и поэтому они больше подходят для обработки огромных объемов данных XML.

Редактировать: SAX не поддерживает запись, поэтому здесь он не применим.

...