Java垃圾回收机制知识点总结
1.Java垃圾回收機制是Java語言的重要功能之一。當程序創建對象,數組等引用類型對象時,系統會自動在內存區為之分配一塊內存,對象就保存在這塊內存區內,當這塊內存不再被任何變量引用時,這塊內存就成為了垃圾,等待垃圾回收機制進行回收。
2.Java 垃圾回收機制的特征:
(1)垃圾回收機制只負責回收堆內存中的對象,不會回收任何物理資源(例如數據庫連接、網絡連接、IO流等資源)。
(2)程序無法精準控制垃圾回收的運行,垃圾回收會合適的時候進行。當對象永久性地失去引用后,系統就會在合適的時候回收它所占得內存。
(3)在垃圾回收機制回收對象之前,總會先調用它的finalize()方法。
(4)將對象的引用賦值為null,也不能釋放掉該對象所占的內存,賦值為null,只是說明該對象可以被回收了,但是具體什么時候回收是程序員無法控制的,有jvm決定的;
3.Java Object的finalize()方法:
?? ??Java 允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其他清理工作。
注:使用該方法可能使將要回收的對象重新復活(讓一個引用變量重新引用該變量),從而導致垃圾回收機制取消回收。
4.強制垃圾回收的兩種方式:
(1)調用System類的gc()靜態方法:System.gc()。
(2)調用Runtime對象的gc()實例方法:Runtime.getRuntime().gc()。
注:1)僅僅是通知系統進行垃圾回收,但系統是否進行垃圾回收依然不確定。大部分時候,程序強制系統垃圾回收后總會有一些效果。
? ? ?2)在《java虛擬機》一書中明確講了,釋放掉占據的內存空間是由gc完成,但是程序員無法明確強制其運行,該空間在不被引用的時候不一定會立即被釋放,這取決于GC本身,無法由程序員通過代碼控制。
5.對象的四種引用方式:
(1)強引用(StrongReference)????一個對象被一個或一個以上的引用變量所引用。
(2)軟引用(SoftReference)???????內存不足時可能會被回收
(3)弱引用(WeakReference)??????不管內存是否足夠,總會回收該對象所占用的內存
(4)虛引用(PhantomReference)??完全類似于沒有引用,虛引用不能單獨使用,虛引用必須和引用隊列聯合使用,主要用于跟蹤對象被垃圾回收的狀態。
6.Java回收機制的優缺點:
優點:
(1)可以很好的提高編程效率,在一個沒有垃圾收集機制的語言下編程,程序員還要花時間來解決難以捉摸的內存問題;
(2)保護程序的完整性,因為程序員不可能因為失誤錯誤地釋放內存而導致jvm崩潰;
缺點:
(1)Java回收機制的開銷影響程序的運行。
總結
以上是生活随笔為你收集整理的Java垃圾回收机制知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: visual studio 2005 s
- 下一篇: js实现轮播图点击按钮切换下一张图片