我正在尝试将大约 50,000 个对象(因此 50,000 个键)插入到java.util.HashMap<java.awt.Point, Segment>
. 但是,我不断收到 OutOfMemory 异常。(Segment
是我自己的课-重量很轻-一个String
字段和3个int
字段)。
线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间 在 java.util.HashMap.resize(HashMap.java:508) 在 java.util.HashMap.addEntry(HashMap.java:799) 在 java.util.HashMap.put(HashMap.java:431) 在 bus.tools.UpdateMap.putSegment(UpdateMap.java:168)
这似乎很荒谬,因为我看到机器上有大量可用内存——在可用 RAM 和用于虚拟内存的 HD 空间中。
Java 是否可能在一些严格的内存要求下运行?我可以增加这些吗?
有一些奇怪的限制HashMap
吗?我将不得不实施我自己的吗?还有其他值得关注的课程吗?
(我在具有 2GB RAM 的 Intel 机器上在 OS X 10.5 下运行 Java 5。)