Java——垃圾回收机制

本文探讨了JVM作为多线程程序的本质,介绍了主线程与垃圾回收线程的作用及执行过程。通过实例演示了如何通过重写finalize方法实现对象的回收,并展示了如何触发垃圾回收机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 /*
 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!");
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值