Есть ли какие-либо проблемы с использованием памяти в JAXB? - PullRequest
5 голосов
/ 17 ноября 2009

Я использую JAXB для разбора xml, есть ли проблемы с производительностью или использованием памяти?

Ответы [ 6 ]

6 голосов
/ 17 ноября 2009

Следует помнить, что JAXBContext.newInstance() - очень медленная операция. Здесь происходит много размышлений и генерация классов, что приводит к проблемам с пермским пространством, упомянутым в Duffymo. К счастью, JAXBContext является поточно-ориентированным, поэтому можно кэшировать один и использовать его . В противном случае, я думаю, можно с уверенностью сказать, что использование памяти JAXB будет на уровне (или, возможно, меньше), чем полное DOM, и, конечно, больше, чем SAX.

Если у вас очень большие документы, можно обрабатывать их порциями с помощью JAXB . Распределение JAXB RI включает пример потоковой передачи с JAXB.

2 голосов
/ 17 ноября 2009

Вы действительно можете столкнуться с проблемами производительности и памяти при привязке данных Java XML из-за чрезмерного создания / уничтожения объекта, эта статья может помочь объяснить новый метод привязки данных, который может помочь избежать этих проблем

2 голосов
/ 17 ноября 2009

JAXB страдает от тех же основных проблем, что и синтаксический анализ на основе DOM, то есть, вообще говоря, вся структура данных данных хранится в памяти одновременно. Тем не менее, как правило, он требует меньше памяти, чем DOM API (за возможным исключением XOM).

Сказав это, есть способы использования JAXB для чтения фрагментов больших документов потоковым способом, если это необходимо. Это довольно экзотическое использование, хотя.

1 голос
/ 17 ноября 2009

JAXB имеет дополнительную проблему использования рефлексии для создания классов, которые добавляются в ваше пермское пространство во время его работы. OutOfMemoryError может возникнуть хаос.

0 голосов
/ 29 июня 2017

Добавление ниже аргумента JVM может решить эту проблему (с небольшим влиянием на производительность)

-Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true

https://issues.apache.org/jira/browse/CXF-2939

0 голосов
/ 17 ноября 2009

Я видел, что производительность может сильно ухудшиться с помощью JAXB в отличие от более «простых» механизмов обработки XML в Java, таких как Xerces SAXParser.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...