System.gc()和Runtime.gc()的區別


首先給出Runtime.gc()方法在API說明文檔中的介紹:



    運行垃圾回收器。調用此方法意味着 Java 虛擬機做了一些努力來回收未用對象,以便能夠快速地重用這些對象當前占用的內存。當控制從方法調用中返回時,虛擬機已經盡最大努力回收了所有丟棄的對象。

    名稱 gc 代表“垃圾回收器”。虛擬機根據需要在單獨的線程中自動執行回收過程,甚至不用顯式調用 gc 方法。

    方法 System.gc() 是調用此方法的一種傳統而便捷的方式。



看到這大家就明白了,其實System.gc()就是通過調用Runtime.gc()來完成的。

如果非要找出點區別的話,那還得再看看System.gc()  在文檔中的說明部分,如下:



    運行垃圾回收器。

    調用 gc 方法暗示着 Java 虛擬機做了一些努力來回收未用對象,以便能夠快速地重用這些對象當前占用的內存。當控制權從方法調用中返回時,虛擬機已經盡最大努力從所有丟棄的對象中回收了空間。

    調用 System.gc() 實際上等效於調用:

         Runtime.getRuntime().gc()
         

    另請參見:
        Runtime.gc()




如果仔細對比,就會發現System.gc()是個靜態方法,也就是說調用System.gc()方法,可以直接調用。而通過Runtime.gc()方法調用時,必須先通過getRuntime方法來得到Runtime實例,然后再調用gc方法,由此可見API說明文檔中“方法 System.gc() 是調用此方法的一種傳統而便捷的方式 ”的說法還是很准確的”。

 

參考博客:

https://blog.csdn.net/u011824857/article/details/38797725


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM