Насколько плохо использование коллекций Java для таких огромных данных?
Java Map
реализации и (в меньшей степени) Collection
реализации имеют тенденцию использовать справедливыеколичество памяти.Эффект наиболее заметен, когда типы ключ / значение / элемент являются типами-обертками для примитивных типов.
Есть ли для них альтернативы?
Существуют альтернативные реализации«коллекции» примитивных типов, которые используют меньше памяти;например, библиотеки GNU Trove.Но они не реализуют стандартные API-интерфейсы Java-коллекций, что серьезно ограничивает их полезность.
Если в ваших коллекциях не используются примитивные классы-оболочки, ваши параметры более ограничены.Возможно, вы сможете реализовать свои собственные пользовательские структуры данных, чтобы использовать меньше памяти, но экономия не будет такой большой (в процентном выражении), и у вас будет много работы для реализации кода.
Лучшее решение - изменить дизайн приложения, чтобы не требовалось для представления всей структуры данных XML в памяти.(Если вы можете добиться этого.)
Повлияет ли огромный объем данных на сбой JVM?
Это может привести к тому, что JVM выдает OutOfMemoryError
.Технически это не сбой, но в вашем случае использования это, вероятно, означает, что у приложения нет иного выбора, кроме как отказаться.