本文目录一览:
java 类中的构造函数和析构函数名都是什么,java需要手动释放资源吗?
java中 构造函数 名与类名相同,java没有 析构函数 ,java不需要手动释放资源,它是有垃圾回收机制的。
Java中有类似C++ 的delete ,free语句来释放资源吗
java采用了垃圾回收机制,程序员无法操作内存释放 可以通过编程的手段来影响,让对象符合垃圾回收条件。
- 将无用对象赋值为null.
- 重新为引用变量赋值。比如:
这样,Person p = new Person("aaa"); p = new Person("bbb");
new Person("aaa")
这个对象就是垃圾了——符合垃圾回收条件了。 - 让相互联系的对象称为“岛”对象
在没有对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
对象就组成了一个孤岛,最后死在堆上——被垃圾回收掉。 - 强制的垃圾回收
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
语句。