Java 到底有没有析构函数呢?
Java 到底有沒有析構(gòu)函數(shù)呢?
?
?
Java 到底有沒有析構(gòu)函數(shù)呢?我沒能找到任何有關(guān)找個的文檔。如果沒有的話,我要怎么樣才能達到一樣的效果?
?
?
?
為了使得我的問題更加具體,我寫了一個應(yīng)用程序去處理數(shù)據(jù)并且說明是有一個重置的按鈕會使得應(yīng)用程序重新回到啟動前的狀態(tài)的。但是所有數(shù)據(jù)都必須是存活著的除非這個應(yīng)用程序已經(jīng)關(guān)閉了,或者重置的按鈕被按下了。
?
?
?
如果是一個C/C++程序員,我認為這個是很容易實現(xiàn)的(因此我計劃后面去實現(xiàn)它)我設(shè)計我的程序的結(jié)構(gòu),使得所有可以被重置的對象都在同一個類里面,為了我可以毀滅掉所有存活的對象當那個重置的按鈕一按下。
?
?
?
?
我在思考如果我只是取消引用,等待垃圾回收器去回收它們,會不會產(chǎn)生內(nèi)存泄漏呢?如果我頻繁的輸入數(shù)據(jù)又按下重置的按鈕。無意中想Java已經(jīng)是一個非常成熟的語言了,它可能有辦法阻止這種情況的發(fā)生或者優(yōu)雅地處理掉。
?
回答
?
?
因為java是一門有垃圾回收的語言,你不能預測一個對象什么時候被回收。因此也就沒有直接等價的析構(gòu)函數(shù)。
?
?
有一個叫 finalize的繼承方法,但是這個它的調(diào)用完全是由垃圾回收器決定的。所以需要明確需要清理的類,慣例是定義在一個關(guān)閉方法里面,并且使用finalize方法只是為了完整性檢查。(如果關(guān)閉方法沒有被調(diào)用,就立即執(zhí)行finalize并且把錯誤寫入日志)
?
?
?
最近一個問題引發(fā)了對finalize的深度討論,如果你想更加深入的話,可以去看看
?
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/171952/is-there-a-destructor-for-java
本文正在參加「Java主題月 - Java Debug筆記活動」,詳情查看 活動鏈接
Java 到底有沒有析構(gòu)函數(shù)呢?
Java 到底有沒有析構(gòu)函數(shù)呢?我沒能找到任何有關(guān)找個的文檔。如果沒有的話,我要怎么樣才能達到一樣的效果?
為了使得我的問題更加具體,我寫了一個應(yīng)用程序去處理數(shù)據(jù)并且說明是有一個重置的按鈕會使得應(yīng)用程序重新回到啟動前的狀態(tài)的。但是所有數(shù)據(jù)都必須是存活著的除非這個應(yīng)用程序已經(jīng)關(guān)閉了,或者重置的按鈕被按下了。
如果是一個C/C++程序員,我認為這個是很容易實現(xiàn)的(因此我計劃后面去實現(xiàn)它)我設(shè)計我的程序的結(jié)構(gòu),使得所有可以被重置的對象都在同一個類里面,為了我可以毀滅掉所有存活的對象當那個重置的按鈕一按下。
我在思考如果我只是取消引用,等待垃圾回收器去回收它們,會不會產(chǎn)生內(nèi)存泄漏呢?如果我頻繁的輸入數(shù)據(jù)又按下重置的按鈕。無意中想Java已經(jīng)是一個非常成熟的語言了,它可能有辦法阻止這種情況的發(fā)生或者優(yōu)雅地處理掉。
回答
因為java是一門有垃圾回收的語言,你不能預測一個對象什么時候被回收。因此也就沒有直接等價的析構(gòu)函數(shù)。
有一個叫 finalize的繼承方法,但是這個它的調(diào)用完全是由垃圾回收器決定的。所以需要明確需要清理的類,慣例是定義在一個關(guān)閉方法里面,并且使用finalize方法只是為了完整性檢查。(如果關(guān)閉方法沒有被調(diào)用,就立即執(zhí)行finalize并且把錯誤寫入日志)
最近一個問題引發(fā)了對finalize的深度討論,如果你想更加深入的話,可以去看看
文章翻譯自Stack Overflow:https://stackoverflow.com/questions/171952/is-there-a-destructor-for-java
總結(jié)
以上是生活随笔為你收集整理的Java 到底有没有析构函数呢?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到鳄鱼头是什么意思
- 下一篇: 为什么Java里面的静态方法不能是抽象的