文档章节

Java中的finalize()

lelinked
 lelinked
发布于 2017/04/11 15:05
字数 401
阅读 7
收藏 0

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并未面临内存耗尽的情形,它是不会浪费时间去执行垃圾回收以恢复内存。

© 著作权归作者所有

上一篇: gc回收思想
下一篇: Java类型运算规则
lelinked
粉丝 6
博文 27
码字总数 20212
作品 1
成都
私信 提问
Java finalize方法

《JAVA编程思想》: java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。 (1).对象不一定会被回收。 (2).垃圾回收不是析构函数。 (3).垃圾回收只与内存有关。 (4)....

清风伴月
2017/10/22
46
0
Java 内存模型及GC原理

一个优秀Java程序员,必须了解Java内存模型、GC工作原理,以及如何优化GC的性能、与GC进行有限的交互,有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效...

长平狐
2013/01/06
287
0
反驳:Threadlocal存在内存泄露

最近看到网上的一篇文章,分析说明ThreadLocal是如何内存泄露的. 但我不这么认为. ThreadLocal设计的很好,根本不存在内存泄露问题. 本文就结合图和代码的例子来验证我的看法. 网上的代码例子普...

xpbug
2013/03/13
7.9K
15
Java内存垃圾回收(Garbage Collection)机制基本方法和原则:System.gc()与finalize()

版权声明:本文为Zhang Phil原创文章,请不要转载! https://blog.csdn.net/zhangphil/article/details/84650786 Java内存垃圾回收(Garbage Collection)机制基本方法和原则:System.gc()与f...

zhangphil
2018/12/01
0
0
优秀的Java程序员必须了解GC的工作原理

一个优秀的Java程 序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面 提升内存的管理效率 ,...

精华之王
2009/04/11
160
0

没有更多内容

加载失败,请刷新页面

加载更多

java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
15
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
17
0
jquery--DOM操作基础

本文转载于:专业的前端网站➭jquery--DOM操作基础 元素的访问 元素属性操作 获取:attr(name);$("#my").attr("src"); 设置:attr(name,value);$("#myImg").attr("src","images/1.jpg"); ......

前端老手
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部