垃圾回收器

之所以要有finalize(),是由于在分配内存时可能采用了C语言中的做法,而非Java中的通常做法。这种情况主要发生在使用“本地方法”的情况下,本地方法是一种在Java中调用非Java代码的方式。本地方法目前只支持C和C++,但它们可以调用任何代码。在非Java代码中,也许会调用的malloc()函数系列来分配存储空间,而且除非调用了 free()函数,存储空间将得不到释放,从而造成内存泄漏,所以要在finalize()中用本地方法调用它。即:它不是进行普通的清理工作的合适场所。

(一)概述

(1)GC只负责对象内存相关的清理,其他资源如文件句柄,db连接需要手动清理,以防止系统资源不足崩溃。

(2)System.gc()只是建议JVM执行GC(垃圾回收器),但到底GC执行与否,是由JVM决定的。

(3)一个简单对象的生命周期为 :unfinalized finalizable finalized reclaimed

(二) finalize()介绍

(1)finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。

(2)finalize()与C++中的析构函数不是对应的,在Java中的finalize方法在垃圾回收器准备垃圾回收前被调用,具有不确定性。

(三)finalize()的执行过程

转载:

https://blog.csdn.net/chenwiehuang/article/details/80725691?utm_source=blogxgwz1
https://blog.csdn.net/qq_36761831/article/details/81211540

(四)示例

//  gc() 方法表示把拉级回收器启动,把拉圾收走
 
    public TestClass() {
          //每个类里面都有finalize方法,和构造方法功能相反,一个是对象产生时调用,一个是对象消亡时调用 
        public void finalize() {
        System.out.println("清理对象...");
    }
    public static void main(String[] args) {
        //下面三个对象一产生即成为拉圾
        new TestClass();
        new TestClass();
        new TestClass();
         
        //如果不加上下面这句,以上产生的三个对象虽成为拉圾,但不一定马上就会启用拉圾回收机制把拉圾回收走
        //所以就可能看不到 finalize 方法内部执行的效果
        System.gc();
    }
     
}

public class B {
	static B b;
	public void finalize() {
		System.out.println("method B");
		b = this;
	}
	public static void main(String[] args) {
		B b = new B();
		b = null;  
		System.gc(); //GC检查后放入 F queue ,然后执行了finalize()方法,该对象可达了,即对象再生
		B.b = null;
		System.gc();  //第一次finalize运行后,该对象的finalizable置为false了,所以该对象即使再
	}                 //被GC运行,也不会执行finalize方法了
}

注:不要频繁使用gc函数(垃圾回收本身就有一定的开销,不利于性能的发挥,但是它会降低内存的使用),要保持代码健壮(注意将不用的变量置为null),让JVM虚拟机去管理内存。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.增加新闻,文章的采集功能; 2.增加新闻,文章克隆功能; 3.增加用户组管理功能; 4.增加服务列表功能; 5.修正商城订购错误; 6.增加一般支付后的查询的选购的商品时间; 7.修正金币支付后的查询错误; 8.增加金币支付后的查询的选购的商品清单; 9.修正音乐,电影下载地址错误; 10.增加商城,域名,主机,邮局的模板管理部分功能; 11.增强了域名查询功能; 12.修正了域名,主机,邮局的分显示模板功能; 13.修正了域名,主机,邮局的搜索功能; 14.修正了后台的权限管理功能; 15.修正了RSS功能; 16.增加精彩推荐的模板管理部分功能; 17.修正发布新闻,文章,等的开关; 18.增加电影,下载的下载记录功能; 19.增加前台发布软件,发布影视功能; 20.修正IP锁功能的错误; 21.增加在线等级功能; 22.修正企业履历的错误; 23.增加企业可修改招聘信息,修改后需审核功能; 24.修正查看企业信息; 25.修正企业黄页企业性质错误; 26.增强论坛功能; 27.增强用户管理功能; 28.增加了邮件群发功能.(免费版不提供) 29.增加跳蚤市场的模板管理部分功能.(免费版不提供) 30.增加企业黄页的模板管理部分功能.(免费版不提供) 31.首页、内页重做美化. 32.修正电影播放被3721、MYIE2等屏蔽的问题. 33.修正论坛附件型的检查方式. 34.增强留言的管理,需要审核. 35.增加留言的不健康字符过滤. 36.增加多个超级管理员. 37.修正管理HTML编辑修改. 38.更换在线支付,使用网银在线支付 39.加强下载地址分配功能. 40.修正上传程序文件被杀毒软件删除.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值