Я пытаюсь вставить около 50 000 объектов (и, следовательно, 50 000 ключей) в java.util.HashMap<java.awt.Point, Segment>
. Тем не менее, я продолжаю получать исключение OutOfMemory. (Segment
- мой собственный класс - очень легкий вес - одно поле String
и поля 3 int
).
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.resize(HashMap.java:508) at java.util.HashMap.addEntry(HashMap.java:799) at java.util.HashMap.put(HashMap.java:431) at bus.tools.UpdateMap.putSegment(UpdateMap.java:168)
Это кажется довольно смешным, так как я вижу, что на машине доступно много памяти - как в свободной памяти, так и в пространстве HD для виртуальной памяти.
Возможно ли, что Java работает с некоторыми строгими требованиями к памяти? Могу ли я увеличить их?
Есть ли какое-то странное ограничение с помощью HashMap
? Должен ли я реализовывать свои собственные? Есть ли другие классы, на которые стоит обратить внимание?
(Я запускаю Java 5 под OS X 10.5 на компьютере Intel с 2 ГБ оперативной памяти.)