`

深入理解java虚拟机读书笔记-第七章

    博客分类:
  • JVM
 
阅读更多

1.虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

2.类的加载、连接、初始化都是在程序运行期间完成的。

3.类的生命周期包括:加载-->连接(验证,准备,解析)-->初始化--->使用---->卸载

4.加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班的开始,但是解析阶段不一定,它在某些情况下可以在初始化阶段之后再开始。这是为了支持Java语言的运行时绑定。

5.对于类加载,JVM没有明确约束触发时间,但是对于初始化,在以下几种情况下必须立即进行(而加载、验证、准备自然需要在此之前开始)。

   (1)遇到new、getstatic、putstatic或者invoke这4条字节码指令。(new实例化对象、get/set一个类的静态字段[被final修饰、已在编译期把结果放入常量池的静态字段除外],以及调用一个类的静态方法)

     (2)  使用java.lang.reflect包的方法对类进行反射调用时,如果类没有进行过初始化,则需要先进行初始化。

     (3)  当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。

     (4)  当虚拟机启动的时候,用户需要制定一个执行的主类。

     (5) 见书上

以上5种场景被称为主动引用,其他的引用方式被称为被动引用。不会触发初始化。

6.被动引用举例:

 

分享到:
评论

相关推荐

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

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

    深入java虚拟机笔记

    ### 深入Java虚拟机知识点总结 #### 第一章 Java体系结构介绍 - **Java体系结构概述**:本章主要介绍了Java体系结构的基本概念及其组成部分。Java体系结构旨在为开发者提供一个统一、高效且跨平台的应用开发环境。...

    JVM:深入理解Java虚拟机 - 学习笔记

    《JVM:深入理解Java虚拟机》是一本深入解析Java虚拟机工作原理和技术细节的经典书籍。这份学习笔记将涵盖JVM的关键概念、架构以及它如何影响Java程序的性能。我们将探讨以下几个方面: 1. **JVM概述** Java虚拟机...

    java虚拟机源码学习-UnderstandingTheJVM:深入理解Java虚拟机(周志明)源码及学习笔记

    《深入理解Java虚拟机》是Java开发者们深入探讨Java运行机制的经典之作,作者周志明以其深入浅出的讲解方式,揭示了Java虚拟机(JVM)的工作原理。本资源包含该书第三版的源码分析及学习笔记,旨在帮助读者更透彻地...

    Java虚拟机讲解笔记.docx

    ### Java虚拟机(JVM)详解 #### 一、Java虚拟机概述与基本概念 Java虚拟机(JVM)是运行Java字节码的虚拟环境,它位于操作...通过对JVM的深入理解,开发者可以更好地优化程序性能,提高应用程序的稳定性和响应速度。

    java学习笔记-----给java初学者

    学习Java的第一步是安装Java Development Kit (JDK),它包含了编译、调试和运行Java程序所需的所有工具,如javac编译器和Java虚拟机(JVM)。 3. **基本语法** - **变量与数据类型**:Java有八种基本数据类型,...

    JAVA学习经典笔记-----2

    6. **高性能:** Java虚拟机(JVM)通过即时编译(JIT)技术提高程序的执行速度。 7. **多线程:** Java内置对多线程的支持,简化了并发程序的开发。 #### 三、Java开发环境配置 1. **Linux环境:** - 配置`JAVA_HOME...

    JAVA学习笔记-良葛格

    Java语言具有跨平台性(Write Once, Run Anywhere),这是因为它具有JVM(Java虚拟机)的存在。任何操作系统上的JVM都可以运行相同的Java字节码,从而避免了针对不同平台编写不同代码的需要。 Java语言的另一特点是...

    JAVA学习笔记-java学习笔记WORD样式.docx

    1. **JVM**(Java虚拟机):运行Java字节码的引擎。 2. **JRE**(Java运行时环境):包含JVM和核心类库。 3. **JDK**(Java开发工具包):包括JRE和开发工具,如编译器`javac`。 #### 七、JDK的下载、安装、卸载 1...

    java学习笔记-基础

    2. **JRE(Java运行时环境)**:包含Java虚拟机(JVM)、类库和其他支持文件,允许在没有安装JDK的计算机上运行Java应用程序。 #### 二、Java语言特性 Java是一种面向对象的编程语言,具备以下特点: 1. **简单性...

    逐步深入的java学习笔记

    - **垃圾回收**: 由Java虚拟机(JVM)中的一个后台线程GC负责。 - 当虚拟机检测到内存不足时,会触发垃圾回收过程。 - 用户可以通过调用`java.lang.System.gc()`来建议进行垃圾回收,但系统可能会忽略这个请求,根据...

    毕向东Java笔记

    ### 毕向东Java笔记知识点总结 #### 第一章:编程基础 1. **Java的特性和优势**: - **简单性**:Java的设计哲学是“使编程变得简单”。 - **面向对象**:Java完全支持面向对象编程概念如封装、继承和多态。 - ...

    Java基础知识笔记详细版-菜鸟翻阅必备

    ### Java基础知识笔记详细版-菜鸟翻阅必备 #### 一、Java概述 1. **Java语言发展史**: - Java由Sun Microsystems公司于1995年推出。 - 最初由James Gosling领导的设计团队开发,目标是用于家用电器的编程。 - ...

    Java随堂笔记

    8. **Java虚拟机(JVM)** - **内存管理**:堆、栈、方法区、本地方法栈的内存分配。 - **垃圾回收**:理解GC的工作原理和垃圾收集器。 - **性能优化**:JVM参数调整,类加载机制。 9. **Java标准库** - **IO与...

    java面向对象和第一章整理笔记

    它的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere, WORA),通过Java虚拟机(JVM)实现了这一目标,可以在不同操作系统上运行Java程序。 2. **与.NET框架的区别**: - 平台独立性:Java代码编译成...

    大佬的java笔记

    作为笔记的作者,被称为“专业第一”,意味着笔记内容会覆盖Java的基础语法、面向对象的深入理解和高级特性。 2. 面向对象编程:在Java中,一切皆为对象,这是Java最重要的编程范式之一。面向对象编程的基本概念...

    java实战经典学习笔记

    ### Java实战经典学习笔记知识点概览 #### 一、Java概述及开发环境搭建 - **Java概述** - Java是一种广泛使用的高级编程语言,由Sun ...此外,通过对各种高级特性和常用类库的深入理解,可以提高开发效率和代码质量。

    JAVA--达内培训笔记

    ### JAVA--达内培训笔记知识点总结 #### 一、Java的发展历史及版本 - **Java之父**: James Gosling(戈尔斯林),他在1995年5月23日发布了Java这一编程语言。 - **Java 1.0 版本**: 1995年发布,标志着Java正式...

    java核心技术-整理过的笔记

    - **JVM(Java Virtual Machine)**:Java虚拟机,负责解释执行字节码。 #### 三、环境变量配置 配置关键环境变量以支持Java开发: - **JAVA_HOME**:指向JDK安装目录。 - **PATH**:包含JDK的bin目录,确保系统能...

Global site tag (gtag.js) - Google Analytics