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