`

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基础知识问答大全

    ### JAVA基础知识问答详解 #### 1. final, finally, finalize的区别 在Java中,`final`, `finally`, 和 `finalize` 这三个关键字虽然只相差一个字母,但它们的用途和作用却大相径庭。 - **final**:此关键字主要...

    Java基础知识点汇总

    ### Java基础知识点汇总 #### 一、JAVA反射机制的作用及应用 **作用:** 1. **动态获取类信息:** 反射可以让程序在运行时动态地获取类的信息,包括类名、方法名、字段等。 2. **动态创建实例:** 可以通过反射...

    请不要忽视这些java基础知识

    ### 请不要忽视这些Java基础知识 #### 一、Final、Finally与Finalize的理解 在Java中,`final`、`finally`以及`finalize`是非常重要的概念,它们在不同的上下文中有着各自独特的含义。 - **Final**:关键字`final...

    基础知识.pdf

    Java基础知识篇深入总结涉及到Java面向对象的基本特征,包括final、finally和finalize的区别,以及int和Integer的区别。还涵盖了Java语言的重要概念,比如重载与重写的区别,抽象类与接口的区别,反射的用途及实现,...

    Java基础知识汇总

    Java是一种广泛使用的面向对象的编程语言,其基础知识涵盖了众多概念,包括数据类型、多态、字符串处理、异常处理以及类和...以上就是Java基础知识的一些关键点,理解并掌握这些内容对于学习Java和应对面试至关重要。

    JAVA相关基础知识(不错).txt

    ### JAVA相关基础知识详解 #### 一、类与对象的基本概念 1. **类与对象**:在...以上内容涵盖了Java基础知识的各个方面,从类与对象的基本概念到异常处理、集合框架的使用等,旨在帮助读者建立坚实的Java编程基础。

    java基础知识总结

    以上是Java基础知识点的总结,涵盖了类与对象、构造函数、基本类型与包装器类、静态变量与方法、字符串操作、异常处理、集合类、EJB角色、逻辑运算符、以及`final`, `finally`, `finalize`等概念,对于初学者理解和...

    Java基础知识索引

    ### Java基础知识索引 #### 基本类型 在Java中,基本数据类型包括整型、浮点型、字符型、布尔型等。例如:`int`、`float`、`char`、`boolean`。 #### 进制转换 Java支持不同进制之间的转换,例如二进制、八进制...

    Java基础知识面试题

    "Java基础知识面试题"通常涵盖多个方面,包括语言基础、语法、面向对象概念、内部类、重载与重写、对象相等性、值传递、包和类库,以及反射机制。 1. **Java概述**:Java是由Sun Microsystems开发,后来被Oracle...

    JAVA基础知识及问答

    【JAVA基础知识及问答】 在Java编程中,掌握基础至关重要,特别是对于初学者。以下是关于Java基础知识的详细解释: 1. **异常处理机制**:Java的异常处理机制是通过`try-catch-finally`块实现的。当程序违反了Java...

    java笔试中的基础知识

    以上所述仅为Java基础知识的冰山一角,但掌握了这些核心概念,无疑能为深入学习和应用Java打下坚实的基础。在实际的笔试和面试中,对这些知识点的熟练掌握将有助于你更好地理解和解决问题,从而展现出扎实的技术功底...

    Java基础知识面试题(2020最新版).pdf

    Java是一种广泛使用的高级编程语言,它的设计理念是“一次编写,到处运行”,这使得它具有强大的跨平台性。Java的跨平台性主要通过JVM(Java虚拟机)来实现,JVM...理解这些Java基础知识对于面试和实际开发都至关重要。

    Java基础知识面试题(2024最新版).docx

    Java是一种广泛使用的面向对象的...以上只是Java基础知识面试题的部分内容,完整的面试准备还需要深入理解异常处理、垃圾收集、多线程、设计模式等高级主题。对于Java开发者来说,持续学习和实践是不断提升技能的关键。

    java基础知识.doc

    【Java基础知识详解】 Java是一种广泛使用的面向对象的编程语言,以其跨平台、自动内存管理(垃圾回收)等特性深受开发者喜爱。以下是对Java基础知识的详细解析: 1. **异常处理**:Java中的异常处理机制用于处理...

    请不要忽视这些java基础知识.txt

    标题与描述均指向一个主题:“请不要忽视这些java基础知识”,这显然是一份旨在强调Java编程语言基础重要性的文档。尽管标签未提供额外信息,但从部分给出的内容中,我们可以提炼出多个关键的Java知识点,覆盖了从...

    Java基础知识.docx

    以下是对Java基础知识的详细阐述: ### 第一章 Java语言概述 1. **对象的三个特性**:封装、继承和多态。 - 封装:这是面向对象的核心特征,通过访问控制(public, protected, default, private)来保护数据,...

    java基础知识点汇总 I

    根据提供的文件信息,我们可以整理出以下关于 Java 的基础知识点: ### 1. 基本概念 #### 1.1 对象与类 - **对象(Object)**:是类的一个实例,拥有类定义的属性和行为。 - **类(Class)**:是一组具有相同属性...

    Java面试基础知识.doc

    "Java面试基础知识" Java 面试基础知识是 Java 开发者在面试时需要了解的基础知识点。以下是 Java 面试基础知识的重要知识点: 1. Java 的接口和 C++的虚类的雷同和不合处 Java 的接口和 C++ 的虚类有相似之处,...

    01.Java基础知识面试题(2022最新版).pdf

    【Java基础知识面试题详解】 Java是一种广泛使用的高级编程语言,以其跨平台性、面向对象、安全性和稳定性等特性而著名。下面将详细解答标题和描述中提到的知识点。 1. **编程**:编程是通过编写代码来告诉计算机...

    java面试八股文java基础知识总结.pdf

    ### Java基础知识总结 #### Java概述 - **何为编程**:编程是指通过编写代码来告诉计算机执行特定任务的过程。这包括定义数据结构、算法逻辑、输入输出操作等。 - **什么是Java**:Java是一种广泛使用的高级编程...

Global site tag (gtag.js) - Google Analytics