Java的垃圾回收机制:强制回收
下车伊始()Time().gc()
垃圾回收
当引⽤类型的实体,如对象、数组等不再被任何变量引⽤的时候。这块占⽤的内存就成为了垃圾。JVM会根据⾃⼰的策略决定是回收内存注意:
1. 垃圾回收只回收内存中的对象,⽆法回收物理资源(数据库连接,⽹络IO等)
2. 程序⽆法精确的控制台垃圾回收的运⾏,垃圾回收汇总任何时候进⾏,系统⾃动。
3. 在垃圾回收机制回收任何对象之前总会调⽤他的finalize()⽅法。
对象在内存中的三种状态:
1. 可达状态:对象有变量再引⽤。instructed
2. 可恢复状态:如果⼀个对象没有任何变量引⽤它,但是调⽤了finalize()后⼜有新的变量引⽤了对象,中间的状态为“可恢复状态”。
3. 不可达状态:对象没有变量引⽤,并且重新调⽤了finalize()⽅法后,还没有变成可达状态,就变为不可达状态,系统开始回收资源。强制垃圾回收() ()
关联词练习
d.study.rubbish;
import javax.naming.Name;
/**
* @ClassName RubbishTest
* @projectName: object1
* @author: Zhangmingda
* @description:测试⼲预垃圾回收
* date: 2021/4/6.
*/
美国密歇根大学public class RubbishTest {
福建客家土楼
private String name;
//构造⽅法
public RubbishTest(String name) {
this.name = name;
}
//重写finalize增加输出便于观察是否⾃动回收了对象
荷花街道@Override
protected void finalize() throws Throwable {海滩拍照
System.out.println(name + "要被回收了");
super.finalize();
}
/
/测试创建多个对象,看垃圾有没有⾃动回收
public static void main(String[] args) {
for(int i=0;i<1000; i++) {
new RubbishTest("name" + i);
System.out.println("循环打印" + "name" + i);
//强制垃圾回收,当没有变量引⽤上⾯new出来的对象,就会调⽤finalize()⽅法回收内存
<();
夫晋何厌之有翻译
//Runtime().gc();
} } }