博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中的finalize()
阅读量:6538 次
发布时间:2019-06-24

本文共 618 字,大约阅读时间需要 2 分钟。

hot3.png

Java中的内存回收都是通过gc回收器进行回收,但是gc是认识已Java形式分配的对象空间(比如new),如果使用一些特殊的方式分配的空间,一般这种情况主要发生在使用“本地方法”的情况下,“本地方法”是一种在 Java中调用非Java代码的方式,已调用非Java代码分配内存的方式,gc是无法进行回收,所以就产生了finalize()方法。

finalize()是gc回收器在回收一个对象时第一个调用的方法,所以就允许我们在对象回收之前先完成对特殊内内存的清理,但只有到下一次垃圾回收过程中,才会真正的回收对象空间。

finalize()在什么时候被调用? 有三种情况 1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候. 2.程序退出时为每个对象调用一次finalize方法。 3.显式的调用finalize方法 4.当某个对象被系统收集为无用信息的时候,finalize()将被自动调用

但是jvm并不保证finalize()一定会被调用,也就是说finalize的调用是不确定的。

注意三点 1、对象可能不被gc回收 2、垃圾回收并不等于“析构” 3、垃圾回收只与内存有关

Java并不能保证对象会被及时的回收,JVM并未面临内存耗尽的情形,它是不会浪费时间去执行垃圾回收以恢复内存。

转载于:https://my.oschina.net/u/2258281/blog/876871

你可能感兴趣的文章
c++ Constructor FAQ 继续
查看>>
事务之六:spring 嵌套事务
查看>>
C#:路径
查看>>
iOS图片加载速度极限优化—FastImageCache解析
查看>>
PHP中的一些新特性
查看>>
I.MX6 Android mmm convenient to use
查看>>
[CareerCup] 13.9 Aligned Malloc and Free Function 写一对申请和释放内存函数
查看>>
55、Android网络图片 加载缓存处理库的使用
查看>>
svn文件提交时强制写注释
查看>>
【转载】千万级规模高性能、高并发的网络架构经验分享
查看>>
OC基础--OC中的类方法和对象方法
查看>>
ubuntu samba服务器多用户配置【转】
查看>>
母线的种类与作用是什么(转)
查看>>
【Xamarin 挖墙脚系列:IOS 开发界面的3种方式】
查看>>
Atitit.工作流系统的本质是dsl 图形化的dsl 4gl
查看>>
I.MX6 Android USB Touch eGTouchA.ini文件存放
查看>>
4-5-创建索引表-串-第4章-《数据结构》课本源码-严蔚敏吴伟民版
查看>>
java 操作 RabbitMQ 发送、接受消息
查看>>
go run main.go undefined? golang main包那点事
查看>>
从零开始写一个npm包,一键生成react组件(偷懒==提高效率)
查看>>