|
|
|
dom4j OutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
Доброго %Времени_Суток%! Есть задачка: прочитать БОЛЬШОЙ xml-файл Написал простенький код: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. И вроде как все прекрасно работает, но !!! Файл размером около 400М Пробовал играться с Код: java 1. Не помогает Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Может можно как-то по другому зачитать файл? Например частями (блоками по 1М), но как тогда скормить это SAXReader? Или может использовать не dom4j ? Заранее спасибо за любые советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:16:33 |
|
||
|
dom4j OutOfMemoryError
|
|||
|---|---|---|---|
|
#18+
DOM парсеры строят из XML дерево объектов. При этом каждый объект ещё содержит целые строки из входящего XML. Поэтому 400Мб файл легко разрастается в 800Мб+ строковых летералов и ещё сотни Мб объектов. Для обработки файлов такого размера использовать можно SAX или StAX. Выбор конретного решения сильно зависит от того что вам нужно получить в итоге. Если нужно просто конвертировать в объекты, то я использую Digester. Он основан на SAX и имеет простой и невероятсно гибкий механизм маппинга. Если нужно гонять туда и обратно, нужно попробовать JAXB. Но с ним, возможно, ещё придется похимичить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2012, 18:24:26 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37906187&tid=2131193]: |
0ms |
get settings: |
13ms |
get forum list: |
17ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
45ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 278ms |
| total: | 447ms |

| 0 / 0 |
