`

JVM学习笔记六 之 连接(类型的生命周期系列)

    博客分类:
  • jvm
阅读更多

一、概述

类型的连接是指把字节码二进制静态结构合并到运行时状态中去。连接又分为验证、准备和解析三个阶段。

二、验证

验证装载到jvm中的字节码流的合法性。jvm spec没有规定具体做什么验证。根据不同的虚拟机实现大概又分为语法验证、语义验证、字节码流验证和引用验证。

1、语法验证,校验字节码语法正确性,使得该类型信息可以存储在方法区内,如魔数、主次版本号、Utf8常量池表项中存储的是合法的utf8值、常量池表项的tag值在是spec中规定的取值范围内、字节码完整未被删除或添加多余数据等。

2、语义验证,校验字节码符合java语言规范,如除了Object外所有对象都必须有一个超类、非抽象类必须实现超类或接口中的抽象方法、不能继承final类、不能重写final方法、不能改变final字段值、不能有同名同参不同返回值的方法。

3、字节码流验证,此阶段是校验方法的字节码,如跳转指令不能跳转到方法体以外、指令后跟正确的操作数如操作long类型值的指令后不能是个int型的值、类型转换有效JDK1.6添加了StackMapTable属性加快字节码流校验,其内部存储的是本地变量表和操作数栈的初始状态。

4、引用验证,验证符号引用的对象合法, 如引用的类型/方法/字段等存在、具有类型/方法/字段的访问权限(private/protected/public)。

三、准备

准备阶段是为类变量分配内存并赋默认值,如果字段有ConstantValue属性,就把ConstantValue里的值作为字段的初始值。根据特定实现,也可能为方法表等别的结构分配内存。

四、解析

解析就是把产量池的符号引用解析为直接引用。

符号引用:符号描述表示的引用

直接引用:指向特定对象如实例、实例方法、字段、静态方法的内存地址、偏移量或间接句柄。

不同类型的常量池类型,解析方法不同。

分享到:
评论

相关推荐

    JVM学习笔记.docx

    本篇JVM学习笔记主要涵盖了以下几个核心知识点: 1. **运行时数据区**: - **程序计数器**:记录当前线程执行的字节码的行号,用于线程恢复执行时跳转到正确位置。 - **Java虚拟机栈**:每个方法执行时创建的栈帧...

    JVM学习资料+笔记

    这个资料包不仅涵盖了理论知识,还包含个人的学习笔记,对于学习和掌握JVM的各个方面都将大有裨益。无论是初学者还是经验丰富的开发者,都可以从中找到提升自己技能的宝贵资源。通过深入学习和实践,可以更好地理解...

    JVM学习笔记2018-4-151

    本篇JVM学习笔记主要关注对象声明、相关内存分配方法以及虚拟内存的物理和虚拟寻址概念。 首先,我们来看对象声明。在Java中,对象是在堆上创建的。例如,`CHeapObj` 类展示了如何在C++中模拟Java对象在堆上的分配...

    jvm学习笔记.zip

    4. **减少内存泄漏**:避免创建过多的短生命周期对象,尤其是大数据量的集合,这可能会导致新生代频繁触发垃圾收集。 5. **代码优化**:良好的编程习惯可以降低GC压力,如及时释放不再使用的对象引用,避免使用静态...

    JVM学习笔记核心知识点整理

    ### JVM学习笔记核心知识点整理 #### 一、引言与背景 随着软件开发技术的不断发展,Java作为一种广泛应用的编程语言,其背后的核心技术——Java虚拟机(JVM)的重要性日益凸显。掌握JVM不仅可以帮助开发者更好地理解...

    jvm学习笔记

    《JVM学习笔记》 Java虚拟机(JVM)是Java平台的核心组成部分,它负责运行所有的Java应用程序。这篇笔记将深入探讨JVM的工作原理、内存管理、类加载机制以及优化策略,帮助读者全面理解JVM并提升Java程序的性能。 ...

    JVM笔记(阳哥).zip

    了解这个过程有助于我们理解和控制类的生命周期。 四、垃圾收集与内存优化 JVM的垃圾收集机制负责自动回收不再使用的对象所占用的内存,主要有标记-清除、复制、标记-整理和分代收集等算法。理解垃圾收集的工作...

    JVM的学习笔记PDF版

    这份“JVM的学习笔记PDF版”应该包含了关于JVM的详细信息,帮助学习者深入理解这个复杂的系统。JVM允许Java代码跨平台运行,通过解释器、类加载器、垃圾收集器等组件实现“一次编写,到处运行”的理念。 1. **JVM...

    深入JVM笔记word版

    Java虚拟机栈同样是线程私有的,其生命周期与线程相同。它用来描述Java方法执行的内存模型,每个方法被执行时都会创建一个栈帧来存储局部变量表、操作数栈、动态链接、方法出口等信息。方法执行过程即为栈帧的入栈和...

    jvm学习笔记(jvm内存模型&垃圾收集算法&类加载机制)

    栈帧的生命周期与方法同步,线程私有。 - **本地方法栈**:与虚拟机栈相似,但服务于本地(Native)方法。 - **堆**:所有线程共享,存储对象实例和数组。堆被分为新生代和老年代,新生代用于短期对象,老年代用于...

    JVM学习笔记

    ### JVM学习笔记知识点详解 #### 一、JVM的基本结构 **JVM(Java Virtual Machine,Java虚拟机)**是一种可以执行Java字节码的虚拟机。它为Java提供了平台无关性,使得Java代码可以在任何安装了JVM的平台上运行。 ...

    JVM内存管理学习笔记

    《JVM内存管理学习笔记》 在Java世界中,JVM(Java Virtual Machine)是运行所有Java应用程序的核心。深入理解JVM内存管理对于优化程序性能、预防和解决内存泄漏问题至关重要。本文将从JVM内存模型、内存区域划分、...

    学习jvm笔记.zip

    JVM根据对象生命周期的不同,将堆内存划分为新生代和老年代,分别采用不同的回收策略。 五、性能优化 1. 参数调优:通过调整JVM启动参数,如-Xms、-Xmx设定堆大小,-XX:+UseConcMarkSweepGC选择垃圾收集器等,来...

    Java分布式应用学习笔记02再谈JVM

    ### Java分布式应用学习笔记02再谈JVM 在深入探讨Java虚拟机(JVM)时,我们再次聚焦于这个核心组件,它不仅是Java运行环境的心脏,也是构建分布式应用的关键技术之一。JVM作为Java语言的核心执行环境,其设计与...

    狂神说JVM探究.rar

    这份资料出自B站上的【狂神说Java】系列教程,为快速入门JVM提供了详实的笔记。以下是根据这些资源可能包含的一些关键知识点的详细解析: 1. **JVM概述**: - JVM是Java平台的核心组成部分,它是一个运行Java字节...

    ImagesForJVM-JVM笔记图片

    【描述】"ImagesForJVM——JVM笔记图片" 暗示这些图片可能是教学或学习笔记的一部分,旨在通过视觉化的方式解释JVM的关键概念,如内存模型、类加载机制、垃圾收集以及性能优化等方面。 【标签】"java" 明确了这些...

    深入Java虚拟机JVM类加载学习笔记

    ### 深入Java虚拟机JVM类加载学习笔记 #### 一、Classloader机制解析 在Java虚拟机(JVM)中,类加载器(ClassLoader)是负责将类的`.class`文件加载到内存中的重要组件。理解类加载器的工作原理对于深入掌握JVM以及...

    JVM历史发展和内存回收笔记

    - **分代收集(Generational GC)**:根据对象的生命周期,将堆分为新生代和老年代,不同年代采用不同的垃圾回收策略。 3. **垃圾回收器**: - **Serial GC**:单线程的垃圾回收器,适合轻量级应用。 - **...

    JVM成神之路笔记整理版

    理解这些区域的用途、生命周期以及它们之间的交互关系是JVM优化的重要一环。 3. **垃圾回收机制**:Java的自动内存管理依赖于垃圾回收器,包括新生代、老年代的划分,Minor GC和Full GC的区别,以及如何调优GC参数...

    JVM内存结构笔记.rar

    新生代又细分为Eden区、Survivor区(From和To),用于进行垃圾收集和对象生命周期管理。 2. **方法区(Method Area)**:在Java 8之前,也被称为永久代,存储了类的信息,如类名、方法信息、常量池等。Java 8之后,...

Global site tag (gtag.js) - Google Analytics