`
yefeng_laixi
  • 浏览: 16273 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入Java虚拟机读书笔记——第7章 类型的生命周期

 
阅读更多

第七章 类型的生命周期

 

1.       类型装载、链接与初始化

 

装载:将二进制形式的Java类型读入Java虚拟机中;

连接:将二进制形式的类型数据合并到迅即的运行时状态中去;

A.    验证:确保Java类型数据格式正确并且适用于Java虚拟机适用;

B.    准备:负责为该类型分配它所需的内存环境;(如类变量分配内存)

C.    解析:负责将常量池中的符号应用转换为直接引用;

初始化:给类变量赋予适当的初始值;

                   JVM严格定义了初始化的时机,所有的Java虚拟机实现必须在每个类或者接口的首次主动使用时初始化:

1.       当创建这个类的新实例时(或者通过字节码执行new指令,或者反射,克隆,反序列化)

2.       调用某个类的静态方法

3.       使用这个类或者接口的静态字段,或者是对这个字段赋值(final修饰的字段除外,编译阶段被初始化为常量表)

4.       当调用Java API 中的某些反射方法时,比如Class中的方法或者java.lang.reflect包中的方法

5.       当初始化某个类的子类时;

6.       当标明为启动类时(含main方法的那个类)

被动使用:父类中声明的字段被子类引用,在子类中调用父类这个变量时,是不是初始化自己的;

 

1.       装载

3个基本动作:a 通过该类型的完全限定名,产生一个代表该类型的二进制数据流

                                   b 解析这个二进制数据流为方法区内的内部数据结构

                          c 创建一个表示该类型的java.lang.Class类的实例

2.       连接

验证: 确认类型符合Java语言的语义,并且他不会危及虚拟机的完整性(父类的装载(有的话),final的验证,符号引用的验证。。。)

准备: 为类变量分配内存空间,设置默认初始值

解析:将符号引用转化为直接引用的过程

 

3.       初始化:赋予正确的初始值

1)  如果类存在直接的超类,且还没有初始化的话,就先初始化超类(接口除外)

2)  如果类存在一个类初始化方法,就执行此方法

3)  初始化的过程是同步的

2.       对象的生命周期

1.       类的实例化:(4个方式,不多说了)

Java虚拟机创建一个类的新实例时,不管是明确的还是隐含的,首先都需要在堆中为保存对象的实例变量分配内存,所有在对象的类中它的超类中声明的变量都要分配内存。

2.       垃圾回收和对象的终结

程序可以明确或者隐含地位对象分配内存,但是不能明确地释放内存。如果类声明了一个名为finalize()的返回void的方法,垃圾收集器会在释放这个实例所占据的内存空间之前执行这个方法(被称为终结方法)一次。垃圾收集器最多只会调用一个对象的终结方法一次(在对象变成不再被引用的之后的某个时候,在占据的对象被重用之前)。

3.       卸载类型

使用启动类装载器装载的类型永远是可触及的,所以永远不会被卸载,只有使用用户自定义类装载器装载的类型才会变成不可触及的。
     
判断动态装载的类型Class实例在正常的垃圾收集过程中是否可以触及有两种方式,第一,也是最明显的,如果程序保持对Class实例的明确引用,它就是可触及的。其次,如果在堆中还存在一个触及的对象,在方法区中它的类型数据指向一个Class实例,那么这个Class实例就是可触及的。

分享到:
评论

相关推荐

    深入java虚拟机.pdf

    深入 Java 虚拟机.pdf Java 虚拟机(Java Virtual Machine,JVM)是 Java 语言的 runtime 环境,是 Java 程序执行的核心组件。它提供了一个平台无关的环境,允许 Java 程序在不同的操作系统和硬件平台上运行。 一...

    深入Java虚拟机——本地方法栈.pdf

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行环境和各种内存区域,以支持Java代码的高效运行。本地方法栈是JVM的一部分,它主要负责处理与本地方法(通常是由C或C++编写)相关的调用。本地方法栈在Java线程...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

    第7章 类型的生命周期 7.1 类型装载、连接与初始化 7.1.1 装载 7.1.2 验证 7.1.3 准备 7.1.4 解析 7.1.5 初始化 7.2 对象的生命周期 7.2.1 类实例化 7.2.2 垃圾收集和对象的终结 7.3 ...

    实战Java虚拟机——JVM故障诊断与性能优化 pdf

    第7章详细介绍了对Java堆的分析方法和案例。第8章介绍了Java虚拟机对多线程,尤其是锁的支持。第9~~10章介绍了虚拟机的核心——Class文件结构,以及虚拟机中类的装载系统。第11章介绍了虚拟机的执行系统和字节码,并...

    深入理解Java虚拟机读书笔记之:第3章 安全(3)

    通过阅读《深入理解Java虚拟机》第三章,开发者不仅可以深入理解Java的安全机制,还能学习到如何在实际项目中实施这些安全策略,提升应用的安全性。对于想要从事Java开发或者对系统安全有深入了解需求的人来说,这一...

    深入java虚拟机笔记

    - **Java虚拟机的生命周期**:JVM的生命周期从启动到关闭的过程,涉及到类的装载、初始化等多个阶段。 - **Java虚拟机的体系结构**:JVM的体系结构主要包括内存区域划分、执行引擎等方面。 - **数据类型**:JVM支持...

    Java虚拟机读书笔记

    java虚拟机读书笔记,主要描述阅读Java虚拟机核心技术的描述。

    深入JAVA虚拟机第二版.pdf 目录

    第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally...

    深入java虚拟机第二版

    java虚拟机不用多少了吧。 深入java虚拟机第二版.pdf

    深入java虚拟机(二)——类的生命周期(上)类的加载和连接1

    【深入Java虚拟机(二)——类的生命周期(上)类的加载和连接】 Java虚拟机(JVM)是Java程序的核心,它负责解释和执行Java字节码。类的生命周期在JVM中是一个关键的概念,它涵盖了从类的加载到卸载的整个过程。...

    深入java虚拟机(三)——类的生命周期(下)类的初始化1

    【深入Java虚拟机(三)——类的生命周期(下)类的初始化1】 类的生命周期在Java中是一个关键的概念,它涵盖了从加载到卸载的整个过程。在类的生命周期中,初始化阶段是非常重要的,因为它涉及到类的静态变量的赋值...

    深入java虚拟机 高清pdf 高清高清高清

    《深入Java虚拟机》这本书是Java开发者深入了解JVM(Java Virtual Machine)的必备经典之作。它详尽地探讨了Java虚拟机的工作原理、内存管理、类加载机制、字节码执行以及性能优化等多个核心主题,旨在帮助开发者...

    深入JAVA虚拟机第二版 Bill Venners著 曹晓钢 蒋靖译

    《深入JAVA虚拟机第二版》是由Bill Venners撰写,并由曹晓钢和蒋靖翻译的中文书籍。这本书是Java开发者必备的经典读物,它详细地解析了Java虚拟机(JVM)的工作原理,帮助读者深入理解Java程序的运行机制。尽管描述...

    深入JAVA虚拟机 随书源码 JVM规范

    通过阅读《深入JAVA虚拟机》和《JVM规范》,结合实际的代码分析,可以让我们更好地理解和掌握这个强大的虚拟机。无论是初级开发者还是经验丰富的专家,都应该对JVM有深入的理解,这将极大地提升我们的编程实践能力。

    实战Java虚拟机——JVM故障诊断与性能优化

    第7章详细介绍了对Java堆的分析方法和案例。第8章介绍了Java虚拟机对多线程,尤其是对锁的支持。第9~10章介绍了Java虚拟机的核心——Class文件结构,以及Java虚拟机中类的装载系统。第11章介绍了Java虚拟机的执行...

    深入Java虚拟机读书笔记1

    深入理解Java虚拟机,首先我们要明白Java虚拟机(JVM)的核心功能:它负责装载类文件,执行字节码,并管理内存。Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM...

    深入JAVA虚拟机 不那么完美的第二版.pdf.zip

    《深入JAVA虚拟机 不那么完美的第二版》这本书虽然在印刷上可能存在一些小瑕疵,但这并不影响我们从中汲取宝贵的Java虚拟机(JVM)知识。Java虚拟机是Java平台的核心组成部分,它负责执行Java程序,提供了跨平台的...

    深入Java虚拟机(原书第2版)及书中源代码

    第7章 类型的生命周期 第8章 连接模型 第9章 垃圾收集 第10章 栈和局部变量操作 第11章 类型转换 第12章 整数运算 第13章 逻辑运算 第14章 浮点运算 第15章 对象和数组 第16章 控制流 第17章 异常 第18章 finally...

    深入JAVA虚拟机.pdf

    深入JAVA虚拟机,帮助大家在Java方面进行学习,深入JAVA虚拟机,帮助大家在Java方面进行学习,

    深入Java虚拟机(原书第二版清晰版) 中文版 Bill Venners PDF

    讲述java虚拟机 唯二的书。本书作者曾因本书荣获专业技术杂志《Java Report》评选的优秀...作者以易于理解的方式深入揭示了Java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益!

Global site tag (gtag.js) - Google Analytics