日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java垃圾回收机制知识点总结

發布時間:2023/12/10 java 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java垃圾回收机制知识点总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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垃圾回收机制知识点总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。