Мы сериализуем / десериализуем XML, используя XStream ... и только что получили исключение OutOfMemory
.
Во-первых, я не понимаю, почему мы получаем ошибку, поскольку 500 МБ выделены для сервера.
Вопрос в том, какие изменения мы должны сделать, чтобы избежать неприятностей? Мы хотим обеспечить масштабирование этой реализации.
В настоящее время у нас есть ~ 60K объектов, каждый ~ 50 байтов. Мы загружаем 60K POJO в память и сериализуем их в строку, которую отправляем веб-сервису, используя HttpClient
. При получении мы получаем всю строку, а затем конвертируем в POJO. Иерархия XML / объектов выглядит так:
<root>
<meta>
<date>10/10/2009</date>
<type>abc</type>
</meta>
<data>
<field>x</field>
</data>
[thousands of <data>]
</root>
Насколько я понимаю, лучший способ - , а не сохранять POJO в памяти, а не записывать содержимое в одну строку. Вместо этого мы должны записать отдельные <data>
POJO в поток. XStream поддерживает , но кажется, что элемент <meta>
не будет поддерживаться. Данные должны быть в форме:
<root>
<data>
<field>x</field>
</data>
[thousands of <data>]
</root>
Так какой подход проще всего выполнить потоковую передачу всего дерева?