(1) GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會致使程序或系統的不穩定甚至崩潰,Java提供的GC功能能夠自動監測對象是否超過做用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操做方法。java
(2) 對於GC來講,當程序員建立對象時,GC就開始監控這個對象的地址、大小以及使用狀況。一般,GC採用有向圖的方式記錄和管理堆(heap)中的全部對象。經過這種方式肯定哪些對象是」可達的」,哪些對象是」不可達的」。當GC肯定一些對象爲」不可達」時,GC就有責任回收這些內存空間。能夠。程序員能夠手動執行System.gc(),通知GC運行,可是Java語言規範並不保證GC必定會執行。程序員
(3) 垃圾回收是一種動態存儲管理技術,它自動地釋放再也不被程序引用的對象,當一個對象再也不被引用的時候,按照特定的垃圾收集算法來實現資源自動回收的功能。算法
(4) System.gc();就是呼叫java虛擬機的垃圾回收器運行回收內存的垃圾。編程
(5) 當不存在對一個對象的引用時,咱們就假定再也不須要那個對象,那個對象所佔有的存儲單元能夠被收回,可經過System.gc()方法回收,但通常要把再也不引用的對象標誌爲null爲佳。性能
(6) 每一個 Java 應用程序都有一個 Runtime 類實例,使應用程序可以與其運行的環境相鏈接。能夠經過 getRuntime 方法獲取當前運行時。 Runtime.getRuntime().gc();優化
(7) java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的簡寫,二者的行爲沒有任何不一樣。對象
(8) 惟一的區別就是System.gc()寫起來比Runtime.getRuntime().gc()簡單點. 其實基本沒什麼機會用獲得這個命令, 由於這個命令只是建議JVM安排GC運行, 還有可能徹底被拒絕。 GC自己是會週期性的自動運行的,由JVM決定運行的時機,並且如今的版本有多種更智能的模式能夠選擇,還會根據運行的機器自動去作選擇,就算真的有性能上的需求,也應該去對GC的運行機制進行微調,而不是經過使用這個命令來實現性能的優化內存