1 java虚拟机构成
类加载系统 执行引擎 运行时数据区
运行时数据区包括 堆、栈、方法区、本地方法区、pc寄存器。其中堆、方法区是多线程共享的,其它的是线程安全的。
2 java虚拟机链接模型
装载 连接 初始化
装载的产物:
一个堆上的class实例:是连接类实例与方法区数据结构的桥梁,通过class实例,类的实例能够知道类本身的详细构成信息
方法区上的一个数据结构:用来描述一个类的的构成信息。包括:
所有方法的描述(参数,返回类型等等);所有超类的描述(如果有的话);所有实现了的接口列表(如果有的话);所有属性的描述;类加载器的索引。
虚拟机中的类,全路径构成是:类加载器名称+类的全路径
类加载器分为
启动类加载器:java核心api
系统类加载器:classpath下寻址
用户自定义类加载器:
类加载器可以用来区分类,比如经常出现这种情况:在WEB-INF/lib下有两个jar包a.jar和b.jar,两个jar包中都包含com.baidu.test.A.class,加载后就不知道虚拟接加载的是哪个类,这说明tomcat设置者用同一个类加载器来管理WEB-INF/lib下的class
连接:
分为验证、准备和解析。连接后,常量池中符号引用已经被替换为直接引用,每个属性已经被分配了内存,整个类的信息已经被验证是合法的。
初始化:
只有类被主动使用时,才会触发初始化。主动使用的场景包括:
调用了类的main方法
通过反射构建了类的对象
调用了类的静态方法
访问了类的静态属性:如果直接访问父类的静态属性,那么只能导致父类被初始化,子类不会被初始化。
通过new关键字直接构建对象
还有一个忘了。
其它情况都是被动调用,不会触发类的初始化。
分享到:
相关推荐
"深入详解JVM内存模型与JVM参数详细配置" 本资源详细介绍了JVM内存模型的结构和组成部分,包括堆内存、方法区、栈内存、程序计数器等。同时,还详细介绍了JVM参数的配置和调整方法,以提高JVM的性能和效率。 ...
JVM在执行某个类的时候,必须经过加载、连接、初始化,而连接又包括验证、准备、解析三个阶段。在加载类的时候,JVM会先加载class文件,而在class文件中便有类的版本、字段、方法和接口等描述信息,这就是类信息。 ...
它定义了一种模型来表示管理系统资源(如JVM、网络连接等),并提供了API来访问和操作这些资源。"HelloAgent.java"可能是实现了一个JMX代理,它注册了MBean(Managed Bean),MBean是JMX中的核心概念,代表可管理的...
1. **JVM内存模型** - Java内存分为堆内存、栈内存、方法区、程序计数器和本地方法栈。理解它们的作用是调试的基础。 - 堆内存存储对象实例,栈内存存储方法调用。 - 分析`share-jvm`中的代码,可以观察不同类型...
#### 一、JVM内存模型概览 JVM(Java虚拟机)内存模型主要由以下几个部分组成:程序计数器、Java虚拟机栈、本地方法栈、Java堆以及方法区(在JDK 8之后称为元空间)。下面将对这几个部分进行详细介绍。 #### 二、...
5. 线程模型:JVM提供了一套标准的线程模型,使得Java程序能够利用多线程来执行并发任务。JVM的线程模型与操作系统的本地线程直接映射,这有助于更好地利用多核处理器的能力。 6. 可扩展性:JVM提供了强大的扩展...
4. 类加载机制:JVM在运行Java程序的过程中负责加载.class文件中的类信息,这一过程包括加载、连接、初始化等步骤。理解类的加载机制对于理解程序的运行和解决类依赖问题至关重要。 5. 性能优化:JVM性能优化是保证...
3. **类加载机制**:书中会详细解释类和接口的加载、连接、初始化过程,以及双亲委派模型,让开发者了解类的生命周期和加载过程,这对理解和解决类加载问题至关重要。 4. **执行引擎**:JVM的执行引擎是解析和执行...
1. **MBeans**:MBeans是JMX的核心,可以是标准MBean、开放MBean或模型MBean,它们提供了管理接口。 2. **MBean服务器**:所有MBeans都存在于MBean服务器中,这是一个容器,负责MBean的生命周期管理。 3. **JMX...
### JVM内存管理与GC模型详解 #### 一、引言 在现代软件开发中,Java虚拟机(JVM)作为一种广泛使用的平台,其内部机制尤其是内存管理和垃圾收集(GC)模型,对提升程序性能和稳定性至关重要。本文将深入探讨Sun ...
2. 内存管理:JVM的内存模型是其复杂性的体现,NeatJVM通过直观的方式展现了堆、栈、方法区、本地方法栈等区域的分配与回收。特别是垃圾收集机制,NeatJVM可能实现了不同的算法,如标记-清除、复制、标记-整理或分代...
`conf`目录下的配置文件可能包含服务器级别的配置,如`server.xml`中涉及的连接器、线程池等设置,也会影响整体性能。进行JVM优化时,要结合这些配置文件一起调整,以达到最佳效果。同时,优化过程应伴随压力测试和...
JVM的动态特性,如类加载的双亲委派模型、类加载器的生命周期、类的加载、连接、初始化过程,也是学习的重要内容。理解这些机制有助于编写更高效、更安全的代码。 总之,这份JVM视频讲解会深入探讨以上各个知识点,...
本篇文章将深入探讨JVM的基础知识,包括它的架构、内存模型、类加载机制以及垃圾收集等核心概念。 首先,JVM的架构主要包括以下几个部分: 1. **类加载器(ClassLoader)**:负责加载类文件到JVM中。类加载器分为...
7. **JVM内存模型**:理解JMM(Java内存模型)对并发编程极其重要,它规定了线程如何共享和访问内存,确保了多线程环境下的可见性、有序性和原子性。 以上知识是构建高性能、低延迟、可扩展的Java Web应用的基础,...
- **Java虚拟机栈(JVM Stack)**:描述的是Java方法执行的内存模型,每个方法被执行时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。如果线程请求的栈深度大于虚拟机所允许的深度,则会...
JVM的内存模型包括堆、栈、方法区、本地方法栈和程序计数器等,这些区域各自承担着不同的职责,如存储对象实例、管理方法调用等。JVM的垃圾回收机制也是其一大特点,自动管理内存,避免了程序员手动进行内存管理。 ...
第94节双亲委派模型00:17:03分钟 | 第95节运行时栈帧结构00:08:46分钟 | 第96节局部变量表00:20:48分钟 | 第97节操作数栈00:08:36分钟 | 第98节动态连接00:02:56分钟 | 第99节方法返回地址和附加信息00:03:24...