簡體   English   中英

為什么我們調用 System.gc() 方法來收集未使用的垃圾 object

[英]Why we are calling System.gc() method to garbage collection of unused object

為什么我們要調用 System.gc() 方法對未使用的 object 進行垃圾回收,如果垃圾回收由后台進程中的守護線程以固定間隔自動完成 Java?

出於測試目的,了解何時執行 GC 可能很有用。 然而,這種情況很少見,在不需要時調用System.gc()是一個常見的錯誤,您可以使用-XX:+DisableExplicitGC.

我們不是,因為我們通常不比 GC 聰明。 從技術上講,調用它並不能保證它會運行,盡管在許多實現中確實如此。

此外,它不一定定期進行,而是根據需要進行。 不同的實現會根據不同的標准啟動 GC。

System.gc() 只是給垃圾收集器一個提示,這可能是垃圾收集的好時機,例如因為很多對象不再使用並且處理已經完成。

它不會強制垃圾收集器做任何事情——它只是給出一個提示。

只有在您需要優化您的應用程序時才使用它(在分析之后)。

到目前為止,我認為我從未在生產代碼中見過它。

雖然這不是必需的,但當我在一個非常大的 Map 被清空后執行顯式 System.gc 時,我的代碼會出現很多問題,更不用說了,只是為了再次重新填充,在一個循環中。 我認為收集器在沒有暗示的情況下嘗試了次要 gcs,直到很明顯行不通為止。 是的,我把它投入生產。 我也加了評論,讓同事們測試一下,而不是盲目刪除。

暫無
暫無

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

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