簡體   English   中英

Java System.GC()和內存泄漏

[英]Java System.GC() and Memory Leakage

我已閱讀並搜索了有關內存泄漏並逐漸增加RAM的論壇。 我嘗試在程序中每60秒使用一次System.GC()方法的調用,並且考慮到我的RAM使用率會下降每次調用,因此這似乎是可行的。 為什么不使用此方法是一個好主意? 在我讀過的每一篇文章中,他們似乎都在模糊地解釋為什么該方法無法釋放內存,但是我的程序似乎卻另有說明。 甚至有人說該方法什么也沒做,只是建議垃圾收集器自行清理。 注意:我泄漏的不是我知道的靜態方法,因為我從整個項目中刪除了它們,並且RAM仍然增加了。 我會發布我的代碼,但是它很大,所以我懷疑有人願意閱讀它。

謝謝您的幫助。

如您所說, System.gc()只是一個建議。 盡管實際上經常這樣做,但不能保證強制進行垃圾回收。

Java垃圾回收會定期運行。 如果您發現您的內存隨着時間的推移而增加,而您沒有回收它,則說明內存泄漏。 調用System.gc()無法解決該問題。 如果您的內存泄漏,最終將沒有任何東西可以收集。

通常,您無需強制使用GC。 如前所述,GC將獨立運行。 您可以調整其行為-http: //www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html

最初的問題來自內存泄漏。 Sympthom是*由於內存泄漏,沒有足夠的內存空間*因此JVM將嘗試再次再次執行GC。 *但仍然有足夠的內存。 所以GC又來了。

因此,System.GC或GC調優類型沒有幫助。

要解決此問題,您必須找到我們的內存泄漏點在哪里。

在JVM中,有一些工具可以轉儲當前的內存占用量(heapdump)。

您可以使用此方法找出泄漏點。 有關更多信息,請參考此-http://www.oracle.com/technetwork/java/javase/memleaks-137499.html

暫無
暫無

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

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