`

java 基础知识(基本类型\finalize)

阅读更多

1. 类的成员是基本数据类型,即使没有初始化,Java也会确保它获得一个默认值。

 

 

基本类型 默认值
boolean false
char ‘\u0000’ (null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d

 

 

static   静态初始化(变量、静态块)

代码仅执行一次,当你首次生成这个类的一个对象时,或者首次访问属于哪个类的静态成员是。

finalize()方法:

为了释放 new对象以外产生的(本地方法产生的内存)内存,java 允许你在类中定义一个名为finalize()的方法,做一些重要的清除工作。

工作原理:一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。

 

 

在Java里的对象回收:

Java 里对象并非总是被“垃圾回收”的。

1. 对象可能不被回收

2.垃圾回收并不等于“析构”。

3. 垃圾回收只与内存有关。

 

垃圾回收器存在: 是为了回收程序不再使用的内存。所以对于与垃圾回收有关的任何行为来说(尤其是finalize()方法),它们必须同内存及回收有关。

 

 

 

 

小弟今天碰到一个比较混淆的问题,想请教一下各位从事java行业的前辈:
在java中,finalize()、java.lang.System.gc()、java.lang.Runtime.gc()的在实际工作中的区别是什么啊?分别又是在什么时候调用的?在此先谢过了



finalize() 是对应object的, 当garbage collector (GC) 决定这个object不再被使用,而要进行清理的时候,会调用finalize(), 默认的finalize就相当于C++的destructor. 你可以override finalize()来自己定义清理过程(例如转到其它的thread而不是彻底清理掉)或者增加一些额外的清理(比方说同时手动清理GC会认为要继续被使用但是实际可以被清理掉的object)

System.gc() 和 Runtime.gc() 功能上是完全一样的, 会手动要求安排GC运行(不是强制立刻执行), 唯一的区别就是System.gc()写起来比Runtime.getRuntime().gc()简单点. 其实基本没什么机会用得到这个命令, 因为这个命令只是建议JVM安排GC运行, 还有可能完全被拒绝. GC本身是会周期性的自动运行的,由JVM决定运行的时机,而且现在的版本有多种更智能的模式可以选择,还会根据运行的机器自动去做选择,就算真的有性能上的需求,也应该去对GC的运行机制进行微调,而不是通过使用这个命令来实现性能的优化.

分享到:
评论

相关推荐

    Java面试大全(备战2021) 最新Java面试必问合集 PDF版

    一、Java基础知识面试题 1、Java概述 2、基础语法 3、面向对象 4、IO流? 5、反射 6、网络编程 7、常用API 8、常用工具类库 9、单元测试 10、日志 二、Java集合容器面试题 1、集合容器概述 2、Collection接口 3、Map...

    毕业就业-刷题库Java面试题大全(2021年-2022年).rar

    一、Java基础知识面试题 1、Java概述 2、基础语法 3、面向对象 4、IO流? 5、反射 6、网络编程 7、常用API 8、常用工具类库 9、单元测试 10、日志 二、Java集合容器面试题 1、集合容器概述 2、Collection接口 3、Map...

    观看韩顺平学习整理java的笔记到异常

    帮助大家复习java基础知识其中有 hashCode 2 toString 2 finalize 2 用已学知识做出简单的房屋出租系统 3 类方法使用注意事项和细节讨论 4 main()方法 4 代码块 4 代码块使用注意事项和细节 5 单例模式 6 final...

    Java程序员面试宝典 PDF 参考资料.rar

    Java程序员面试宝典 pdf,内容涉及String、Servlet、int 和 Integer的区别、、String 和StringBuffer的区别、运行时异常与一般...等,都是些比较实用的Java基础操作知识,对Java不熟悉的朋友应该是不错的面试必备知识。

    疯狂JAVA讲义

    4.6.2 基本类型数组的初始化 95 4.6.3 引用类型数组的初始化 96 4.6.4 没有多维数组 99 学生提问:我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不可以扩展成三维数组吗?甚至扩展到更多维的...

    JAVA面试题最全集

    一、Java基础知识 1.Java有那些基本数据类型,String是不是基本数据类型,他们有何区别。 2.字符串的操作: 写一个方法,实现字符串的反转,如:输入abc,输出cba 写一个方法,实现字符串的替换,如:输入...

    Java面试题大全

    Java面试题大全 JAVA相关基础知识 多态性 final, finally, finalize的区别。

    java 编程入门思考

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Java的Object类讲解案例代码 equals()、hashCode()、finalize()、clone()、wait()

    Java初学者:如果你是刚开始学习Java编程,那么Object类是一个重要的基础知识点。通过该案例代码,你可以学习如何在自己的类中正确重写equals()、hashCode()、toString()等方法,提高代码质量和可读性。 经验丰富的...

    Java初学者入门教学

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    java联想(中文)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    JAVA_Thinking in Java

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    AIC的Java课程1-6章

    希望大家喜欢 <br>如果大家觉得好我继续发 <br>课程定位 “Java程序”课程覆盖SCJP认证所要求的知识点,是J2EE课程体系中的基础课程。本课程面向的学员应该具有基本的编程概念,能够编写简单的程序,并学习...

    Thinking in Java简体中文(全)

    2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 11. 课程和培训 12. 错误 13. 封面设计 14. 致谢 第1章 对象入门 1.1 抽象的进步 1.2 对象的接口 1.3 ...

    Thinking in Java 中文第四版+习题答案

    4.3.1 finalize()用途何在 4.3.2 必须执行清除 4.4 成员初始化 4.4.1 规定初始化 4.4.2 构建器初始化 4.5 数组初始化 4.5.1 多维数组 4.6 总结 4.7 练习 第5章 隐藏实施过程 5.1 包:库单元 5.1.1 创建独一无二的包...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    史上最全java面试,103项重点知识,带目录

    6. String 属于基础的数据类型吗? 4 7. java 中操作字符串都有哪些类?它们之间有什么区别? 4 8. String str="i"与 String str=new String("i")一样吗? 5 9. 如何将字符串反转? 5 10. String 类的常用方法都有...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm ------------------------------------------------- 本教程由yyc,spirit整理 ------------------------------------------------- “Thinking in Java...

    java 面试常问的问题 如何回答

    Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 7 2、Java有没有goto? 7 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套循环? 8 5、switch语句能否作用在byte...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【基础】java基本数据类型(四类八种) 15 Java自动类型转换 16 数据类型自动提升(注意以下讨论的是二元操作符) 16 【基础】switch支持的类型 17 【基础】当一个对象被当作参数传递到一个方法后,此方法可改变这个...

Global site tag (gtag.js) - Google Analytics