本文目錄一覽:
- 1、java 類中的構造函數和析構函數名都是什麼,java需要手動釋放資源嗎?
- 2、Java中有類似C++ 的delete ,free語句來釋放資源嗎
- 3、java什麼時候該寫.close()釋放資源?
java 類中的構造函數和析構函數名都是什麼,java需要手動釋放資源嗎?
java中
構造函數
名與類名相同,java沒有
析構函數
,java不需要手動釋放資源,它是有垃圾回收機制的。
Java中有類似C++ 的delete ,free語句來釋放資源嗎
java採用了垃圾回收機制,程序員無法操作內存釋放
可以通過編程的手段來影響,讓對象符合垃圾回收條件。
1、將無用對象賦值為null.
2、重新為引用變數賦值。比如:
Person p = new Person(“aaa”);
p = new Person(“bbb”);
這樣,new Person(”aaa”)這個對象就是垃圾了——符合垃圾回收條件了。
3、讓相互聯繫的對象稱為「島」對象
Person p1 = new Person(“aaa”);
Person p2 = new Person(“bbb”);
Person p3 = new Person(“ccc”);
p1=p2; p2=p3; p3=p1;
p1=null; p2=null; p3=null;
在沒有對p1、p2、p3置null之前,它們之間是一種三角戀關係。分別置null,三角戀關係依然存在,但是三個變數不在使用它們了。三個Person對象就組成了一個孤島,最後死在堆上——被垃圾回收掉
4、強制的垃圾回收System.gc()
實際上這裡的強制,是程序員的建議,什麼時候執行還是JVM的垃圾回收器說了算
java什麼時候該寫.close()釋放資源?
在Java中對資源的讀寫最後要進行close操作,以下是2種釋放資源處理方式:
第1種:把close()放在try中。
try {
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(
“out.txt”, true)));
pw.println(“This is a test.”);
pw.close();
} catch (IOException e) {
e.printStackTrace();
第3種:使用try-with-resource語句。
try (PrintWriter pw = new PrintWriter(
new BufferedWriter(
new FileWriter(“out.txt”, true)))) {
pw.println(“This is a test.”);
} catch (IOException e) {
e.printStackTrace();
無論是否有異常發生close()方法都應該被調用,因此close()應放在finally中。而從Java 7開始,可以使用try-with-resource語句。
原創文章,作者:TNSZ,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/134608.html