/*
JVM(java虚拟机)是不是多线程程序?
至少有一个负责程序正常执行的线程,也就是执行main函数中的代码----主线程
还得有一个负责垃圾回收的线程,也就是执行finalize函数中的代码----垃圾回收线程
任务:每个线程需要执行的代码
任务代码都有其存储位置
主线程的任务代码在main函数中
垃圾回收线程的任务代码在finalize函数中
线程是随着任务的存在而存在,随着任务的结束而消失
*/
//每个对象都可以被回收,回收的功能定义在Object中的finalize()方法中
class test1{
//重写Object中回收对象的方法
public void finalize(){
System.out.println("被回收了......");
}
}
class test{
public static void main(String[] args){//主线程
new test1();//这三个对象都是匿名对象,创建完没有引用,直接就是垃圾
new test1();//需要执行垃圾回收的线程回收这三个对象
new test1();
//多线程程序每次运行的结果是不一样的,因为线程在争抢CPU
//这就是多线程程序的随机性
System.gc();//主线程让垃圾回收机制去执行,这时有两个线程,主线程和垃圾回收线程
System.out.println("Hello World!");
}
}
Java——垃圾回收机制
最新推荐文章于 2025-04-10 16:06:42 发布