第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有用于Java的析構函數(shù)嗎?

有用于Java的析構函數(shù)嗎?

慕碼人8056858 2019-07-10 10:01:50
有用于Java的析構函數(shù)嗎?有用于Java的析構函數(shù)嗎?我似乎找不到這方面的任何文件。如果沒有,我怎樣才能達到同樣的效果?為了使我的問題更加具體,我正在編寫一個處理數(shù)據(jù)的應用程序,規(guī)范中說應該有一個“重置”按鈕,將應用程序恢復到它最初剛剛啟動的狀態(tài)。但是,除非應用程序關閉或按下重置按鈕,否則所有數(shù)據(jù)都必須是“活動的”。作為一個C/C+程序員,我認為這是很容易實現(xiàn)的。(因此,我計劃在最后實現(xiàn)它。)我構建了我的程序,使所有的“重置”對象都在同一個類中,這樣當按下重置按鈕時,我就可以銷毀所有的“活動”對象。我在想,如果我所做的只是取消對數(shù)據(jù)的引用,等待垃圾收集器收集數(shù)據(jù),那么如果我的用戶重復輸入數(shù)據(jù)并按下重置按鈕,就不會有內(nèi)存泄漏嗎?我還在想,因為Java作為一種語言已經(jīng)相當成熟,所以應該有一種方法來防止這種情況的發(fā)生或優(yōu)雅地解決這個問題。
查看完整描述

3 回答

?
慕森王

TA貢獻1777條經(jīng)驗 獲得超3個贊

看一下試著用資源聲明。例如:

try (BufferedReader br = new BufferedReader(new FileReader(path))) {
  System.out.println(br.readLine());} catch (Exception e) {
  ...} finally {
  ...}

在這里,不再需要的資源在BufferedReader.close()方法。您可以創(chuàng)建自己的類來實現(xiàn)AutoCloseable并以類似的方式使用。

這句話比finalize在代碼結構方面,但同時它使代碼更易于理解和維護。而且,也不能保證finalize方法在應用程序的生存期內(nèi)被調(diào)用。


查看完整回答
反對 回復 2019-07-10
?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

不,這里沒有破壞者。原因是所有Java對象都是堆分配和垃圾收集的。沒有顯式的去分配(即C+的刪除操作符),就沒有實現(xiàn)真正析構函數(shù)的合理方法。

Java確實支持終結器,但它們只用于保護持有本機資源句柄(如套接字、文件句柄、窗口句柄等)的對象。當垃圾收集器收集一個沒有終結器的對象時,它只是將內(nèi)存區(qū)域標記為空閑,就是這樣。當對象有終結器時,它首先被復制到一個臨時位置(請記住,我們在這里收集垃圾),然后將它排隊到等待完成的隊列中,然后終結器線程以非常低的優(yōu)先級輪詢隊列并運行終結器。

當應用程序退出時,JVM停止,而不等待掛起的對象最后確定,因此實際上無法保證您的終結器將運行。


查看完整回答
反對 回復 2019-07-10
  • 3 回答
  • 0 關注
  • 861 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號