當前位置:編程學習大全網 - 編程語言 - 求教壹個java關於垃圾回收的問題

求教壹個java關於垃圾回收的問題

(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的運行機制進行微調,而不是通過使用這個命令來實現性能的優化。

  • 上一篇:xcode 7 真機調試報錯,模擬器正常,是什麽原因,錯誤如下
  • 下一篇:怎樣使用matlab畫經驗分布函數
  • copyright 2024編程學習大全網