⑴ 在java中如何主動的去釋放無用對象,從而使得系統GC可以盡早釋放內存在編程上需要注意些什麼
1、與C語言相比,垃圾回收器是JAVA的一大優勢。其功能在於自動釋放舉余衫違背佔用的內存,但何時去釋放有其自身的演算法,不支持使用者直接釋放內存。
2、使用者所能做的只是使用System.gc()通知JAVA垃圾回收器在「合適」的時間逐個使用Object.finalize()清除未為程序引用的各個對象。
3、使用著調用Object的finalize()方法不會啟動任何作用,只能是重寫該方法執行寫對象銷毀前應做的操作,如關閉IO等。
4、使用者還可以做到的就是指定那些對象正腔佔用的毀鍵內存會被釋放,方法就是將對象的值賦為NULL。
5、編程用使用者應做的就是提高對象的復用性,盡量少的聲明對象。
⑵ 如何手動釋放一個java線程佔用的資源
建議你聲明一個boolean變數替換while(true)中的true,因為這樣就可以控制線程了,然後不必等到主程序結束
⑶ java中如何關閉一個窗口就完全釋放它所佔的資源但不終止整個程序(程序由多個窗口)
根據Java的垃圾回收機制:垃圾回收回收的是無任何引用的對象占據的內存空間
所以你只要採用匿名類創建打開的窗口並調用System.gc() 或Runtime.getRuntime().gc() 就可以啦
在要創建窗口的地方這樣寫:
new frame().setVisible(true);
System.gc() ;
當你再次打開同樣的窗口時,又會執行new frame().setVisible();重新創建一個新的窗口,原來的自然就變成無任何引用的對象了,隨即就會被JVM垃圾回收機制回收掉了
注意:調用System.gc()用於顯式通知JVM可以進行一次垃圾回收,但真正垃圾回收機制具體在什麼時間點開始發生動作是不可預料的
⑷ java 什麼資源需要手動釋放
1、文件流要釋放
2、資料庫連接資源要釋放
3、在結合使用hibernate時,session要釋放
在使用的時候,java的垃圾回收一般不用手動釋放,但是可以調用方法進行調用以實現垃圾回收,在某種特定情況下會使用到