在我們的Java應用程序之一,我們已經得到 OutOfMemoryError:GC Overhead limit exceeded.
的OutOfMemoryError:GC開銷超過限制
我們已經用在someplaces HashMaps這樣用於存儲我,我們可以找出一些data.From日誌重放的在同一個地方。
我想問一下垃圾收集器是否花更多時間清理hashmaps?
在看代碼(我不能分享在這裏),我發現有一個HashMap創建像
Hashmap topo = new HashMap();
,但從未使用過此HashMap。 這是我的應用程序中的一種內存泄漏嗎?
如果此Hashmap
被這是做一些處理的方法中創建並且它不別處使用這種方法也被訪問我的多個線程說20。然後在這樣的情況下將它的影響,如上面創建的Hashmap,垃圾收集器花更多時間來恢復堆並拋出OOME。
如果您需要更多詳細信息,請讓我知道。
如果'topo'引用不能轉義它所聲明的範圍,那麼否,它不會造成內存泄漏。 –
垃圾收集器在清除這些HashMap時會遇到問題嗎?如果假設有大量的hashmaps – Saurav
使用分析器來查看內存消耗或增加最大內存大小。如果你不測量你的程序,你只是猜測。使用大量的HashMap對性能/內存不利,但它可能不是您最大的問題。 –