標籤:gc
(1) GC是垃圾收集的意思(Gabage Collection),記憶體處理是編程人員容易出現問題的地方,忘記或者錯誤的記憶體回收會導致程式或系統的不穩定甚至崩潰,Java提供的GC功能可以自動監測對象是否超過範圍從而達到自動回收記憶體的目的,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的運行機制進行微調,而不是通過使用這個命令來實現效能的最佳化。
Java中System.gc()和Runtime.getRuntime().gc()