簡體   English   中英

HashMap導致的內存泄漏

[英]Memory Leakage due to HashMap

由於我的代碼中有HashMap ,我面臨內存泄漏。 當我第一次登錄到應用程序時,這個HashMap填充,我使用這個Map來緩存一些數據。

我在我的應用程序中使用了這個緩存的數據。

在應用程序中沒有運行任何內容后,它的大小會不斷增長。 只有在自動調用垃圾收集器或我調用它時才會減小大小。

但之后又開始增加。 這肯定是內存泄漏,但是如何避免呢?

我的探查器還將ResultSet.getString()Statement.execute()為熱點內存分配。 這些方法用於填充此緩存。

由於這些方法,內存是否泄漏? 我在finally塊中關閉了DB Connection。

為什么還在向我展示這些方法?

正如上面的評論所解釋的那樣,這聽起來不像是內存泄漏。

在Java應用程序中,JVM將創建對象並耗盡內存。 隨着時間的推移,一些對象將超出范圍(有資格進行垃圾收集),但在下一次收集發生之前,它們仍然會在堆中“耗盡內存”。 這不是問題,這是java的工作方式。 當JVM決定它需要釋放內存時,它將運行一個集合並且使用的內存應該丟棄。

你應該關心你所看到的嗎? 我可以想到你應該有兩個原因,一個你為什么不應該這樣做。 如果你的垃圾收集釋放了足夠的內存以便應用程序繼續運行,那么收集不會影響性能,而你是一個忙碌的人,有其他事情可做,那么我認為沒有理由你應該關心。

但是,如果您擔心自己不了解應用程序的詳細工作方式,或者有理由擔心“這么多的內存”會成為問題(您將來可能希望使用更多的數據來運行該應用程序,或者希望要在將來分配較少的堆來運行它,那么您可能想要調查。

如果在應用程序無所事事時內存已用完,那么我將專注於此。 當它什么都不做的時候它真的在做什么? 我打賭它正在做'某事'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM