Желает, чтобы Java позволяла выделять бесконечное количество кучи в виде файла отображения памяти: -)
Если вы используете Java 5, то используйте Java DB; это ядро базы данных, написанное на Java, основанное на Apache Derby . Если вы знаете SQL, то настройка встроенной базы данных займет всего пару минут. Поскольку вы можете создавать базу данных снова при каждом запуске приложения, вам не нужно беспокоиться о разрешениях, миграции схемы БД, устаревших кешах и т. Д.
Или вы можете использовать базу данных ОО, например, db4o , но многим людям сложно осуществить мысленный переход на использование запросов для перебора внутренних структур данных. Чтобы взять ваш пример: у вас есть огромный HashMap
. Вместо использования map.get()
вы должны создать запрос с использованием DB4o, а затем выполнить этот запрос на карте, чтобы найти элементы; в противном случае DB4o будет вынужден загрузить всю карту сразу.
Другой альтернативой является создание собственной минимальной системы: считайте данные из файла XML и сохраните их как большой файл с произвольным доступом, а также индекс + кэширование, чтобы вы могли быстро искать элементы. Если все ваши объекты сериализуемы, то вы можете использовать ObjectInputStream
для чтения отдельных записей после поиска в нужном месте, используя RandomAccessFile
.