我試圖插入大約50,000個對象(因此50,000個密鑰)到java.util.HashMap<java.awt.Point, Segment>
。但是,我不斷收到OutOfMemory異常。 (Segment
是我自己的班級 - 體重非常輕 - 一個String
字段,以及3個int
字段)。無論是在免費的RAM和硬盤空間用於虛擬內存 -爲什麼在將50,000個對象插入到HashMap中時會出現OutOfMemoryError?
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)
,因爲我看到有大量內存的機器上可用這似乎挺可笑的。
是否有可能Java運行時有一些嚴格的內存要求?我可以增加這些嗎?
HashMap
有一些奇怪的限制嗎?我將不得不執行我自己的?還有其他類別值得關注嗎?
(我一個Intel機器有2GB RAM上運行的Java 5下OS X 10.5。)
如何確定當前的尺寸,以便我瞭解未來?謝謝! – 2008-10-24 19:57:26
非常奇怪,雖然你有這樣的小內存可用,你不能添加50000個小對象到散列。聽起來不像那麼多。 – 2008-10-24 19:59:07
謝謝!把它抽到2048MB,我的程序終於完成了!哈哈。哇。 – 2008-10-24 20:05:22