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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java三态_Java中对象的三种状态

發(fā)布時間:2024/7/23 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java三态_Java中对象的三种状态 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java中的對象的三種狀態(tài)是和垃圾回收緊密相關(guān)的,因此有必要深究。

狀態(tài)一:可觸及態(tài):從根節(jié)點開始,可以搜索到這個對象,也就是可以訪問到這個對象,也有人將其稱為可達狀態(tài)。

狀態(tài)二:可復(fù)活態(tài):從根節(jié)點開始,無論如何都不能訪問到這個對象,也就是說這個對象的所有引用都被釋放,沒有任何變量引用該對象了,

但是該對象有可能在finalize()方法中再次被引用,從而復(fù)活。

狀態(tài)三:不可觸及態(tài):對象的所有引用都被釋放了,并且在對象的finalize()方法中沒有復(fù)活,這樣的話該對象就是不可觸及狀態(tài)。

對于狀態(tài)三我再解釋下,所有對象都有finalize()方法,并且該方法只會被執(zhí)行一次,并且它的執(zhí)行時間是隨機的,一般在我們?yōu)樽兞抠x值為null后,

會執(zhí)行,如果我們在某個對象的finalize()方法中為他增加了引用,那么該對象會復(fù)活,但是當(dāng)我們再次為其賦值為null時,finalize()方法不會被執(zhí)行了,

因為該方法知執(zhí)行一次,該對象也就變成了不可觸及態(tài)。

說到finalize()方法,我再多說點,有的書上寫,可以在finalize()方法中釋放某些資源,其實這并不被我們所推薦,主要有兩點:

1、finalize()方法執(zhí)行的時間不確定,那么這就會導(dǎo)致資源還沒來得及釋放,又有一個線程需要訪問資源,可能會產(chǎn)生異常錯誤。尤其是在多線程程序中。

2、finalize()方法中可能會發(fā)生引用外泄,無意中復(fù)活對象,從而產(chǎn)能生內(nèi)存泄漏。

推薦在try-catch-finally結(jié)構(gòu)的finally塊中釋放資源。

總結(jié)

以上是生活随笔為你收集整理的java三态_Java中对象的三种状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。