Я разбираю огромные файлы xhtml и пытаюсь поиграть с содержимым в нем. В основном слова в нем, их позиции и т. Д. Я попытался использовать HashMap, ArayList и т. Д. Все они выдают OutOfMemory после загрузки данных 130347. Какова структура данных, которая может использоваться для хранения огромных данных в JAVA.Какую структуру данных я должен использовать для обработки огромных данных.
ответ
Ваш вопрос довольно расплывчатый. Но если у вас закончилась нехватка памяти, вы, скорее всего, должны использовать базу данных на диске. PostgreSQL, MySQL, HSQLDB, что угодно.
Вы хотите сказать, что информация, которую я собираю из документа, можно записать в hsqldb с надлежащей структурой данных на локальном диске, а не загружать в память, чтобы можно было запросить то, что мне нужно, по мере необходимости. Поскольку мне нужно это только для этого запроса, в конце обработки мне нужно удалить мои вставки? Это довольно интересно. Я не применял hsqldb-решения для приложений реального времени. Не могли бы вы рассказать мне компромисс, который мне нужно сделать для такого решения, как производительность, так как мне придется вставлять огромное количество данных, делающих много звонков? – Rachel
Какую базу данных вы бы предложили использовать, временно загрузить данные для запроса и очистить их в конце запроса. – Rachel
XML-файл размером 10 Мбайт ни в коем случае не является «огромными данными», поэтому база данных диска, вероятно, слишком переполнена. – intgr
Что вы делаете сейчас, сосать все свои данные в одну огромную структуру, а затем обрабатывать ее, не будет работать независимо от используемой структуры данных. Попробуйте инкрементный подход, когда вы читаете некоторые данные, затем обрабатываете их, затем читаете еще несколько и т. Д. (Фактически, что вы делаете таким образом, создается ваша собственная структура данных специального назначения, которая обрабатывает обработку в кусках, поэтому мой первый предложение не очень точно.)
Одним из способов сделать это может быть анализ документа с использованием SAX, который использует подход, основанный на событиях. Вы можете создать обработчик содержимого и сохранить объекты, которые вы создаете, из чтения элементов xml, обработать их, как только они накопились, а затем очистить коллекцию.
Просмотрите настройки вашей виртуальной машины. Вы можете изменить размер памяти виртуальной машины через командную строку, если это где вы находитесь, или через файл конфигурации, если вы находитесь в какой-то среде на стороне сервера.
Если вы используете TOMCAT/затмение, этот поток должен помочь вам: Eclipse memory settings when getting "Java Heap Space" and "Out of Memory"
Рассмотрите возможность использования SAX парсер, меньше памяти интенсивно.
Спасибо, я попробую с SAX. – Rachel
- 1. Какую структуру данных Python я должен использовать?
- 2. Какую структуру данных я должен использовать здесь?
- 3. Какую структуру данных я должен использовать?
- 4. Какую структуру данных я должен использовать?
- 5. Какую структуру данных использовать
- 6. Какую структуру данных использовать?
- 7. Какую структуру данных я должен использовать для геокодирования?
- 8. Какую структуру данных я должен использовать для сохранения этой информации?
- 9. Какую структуру данных я должен использовать для этой конкретной ситуации?
- 10. какую структуру данных я должен использовать для хранения библиотеки файлов ..?
- 11. Какую структуру данных я должен использовать для этой конкретной проблемы?
- 12. Какую структуру данных использовать?
- 13. Какую структуру данных использовать?
- 14. Какую структуру данных использовать?
- 15. Какую структуру я должен использовать для WebRTC?
- 16. какую структуру данных я должен использовать в этом случае?
- 17. Пожалуйста, дайте совет, какую структуру данных я должен использовать.
- 18. Какую структуру данных я должен использовать, чтобы избавиться от []?
- 19. Какую структуру и базу данных я должен использовать?
- 20. Какую СУБД или структуру данных я должен использовать?
- 21. Какую структуру данных я должен использовать? HashTable, Array ...?
- 22. Какую структуру данных я могу использовать здесь?
- 23. Эффективность: какую структуру данных использовать ...?
- 24. Какую структуру данных использовать для этого алгоритма?
- 25. Какую структуру данных C# использовать?
- 26. Какую структуру данных следует использовать
- 27. Какую структуру данных вы предлагаете для обработки этих данных?
- 28. Какую прикладную структуру я должен использовать?
- 29. Какую веб-структуру Perl я должен использовать?
- 30. Какую структуру отображения текста я должен использовать?
Я не думаю, что это тип данных, это проблема, я думаю, вы пытаетесь сделать «слишком много сразу». Если вы имеете дело с достаточно большим количеством данных, которые по существу вызывают проблемы с памятью, вам может понадобиться разбить эти шаги и сделать это в кусках. –
Насколько велика ваша xhtml-файл? –
Я получаю эту проблему с файлом 5 МБ. Я нацелен на поддержку файла до 10 МБ. – Rachel