在水木上看到了一则关于撒加的文章,于是看了看它关于JVM的介绍,并开始收集了关于JVM的资料,并开始查看JVM spec.网上有中文和英文两个版本
书中从第三章开始步入正题介绍了关于JVM的基本概念,CLASS文件的结构,常量池及其解析。并在后面介绍了JVM的基本指令集,一般JAVA源码的编译和一些优化。其中最重要的还是前面的基本概念,这里是看懂JVM指令代码的基础。因为是Spec,所以它的宗旨是介绍Class文件格式及其其中的含义,并为JVM提供解析Class文件并运行它提供一个准则。也就是说,Class文件也可以由其他语言例如C语言实现。只要Class文件满足Spec,并通过JVM的链接过程。
JVM运行是基于以下数据的:
1 运行期数据,包括:PC寄存器,Java栈,堆,方法区。
A PC寄存器
和普通汇编指令中的没有什么区别
B Java栈
每个线程拥有一个栈,这点和以前的常识一样。它的作用主要存储JVM框架,其实就是栈帧。栈帧包括:局部变量表,操作数栈及一些其他引用信息。这些引用信息包括方法和类实例的引用。运行期间会利用这些信息进行一些连接操作。
C Java堆
所有线程共享此存储区。用于运行期间new object或者new array,交由GC进行回收。
D 方法区
这部分也是所有线程共享的,GC也可以进行回收它。可以将它理解为汇编代码中的正文段,它包含:常数池,域,方法数据,方法,构造函数以及<init><clinit>代码。
a 常数池
相当于Symbol表,对应于class文件中的constant_pool
b 自身方法栈
这个是为Native方法服务的,可以设置它的大小。
c 方法,构造行数及<init><clinit>代码
就是执行代码,对应于class文件中的methods
d 域
对应于class文件中fields
e 接口
对应于class文件中interfaces
在class文件加载的时候建立方法区,当进行方法调用的时候会操作Java栈,并有可能因为创建实例或数组操作Java堆。我们可以先从Class文件结构开始来了解方法区的布局,并创建它的数据结构
分享到:
相关推荐
1. **JVM概述**: - JVM是Java平台的核心组成部分,它是一个运行Java字节码的虚拟机,负责执行Java程序。 - JVM实现了Java的跨平台特性,即“一次编写,到处运行”。 2. **类加载机制**: - 类的生命周期包括...
JVM,即Java Virtual Machine(Java虚拟机),是Java程序员必须掌握的核心技术之一。初学者通常从简单的“HelloWorld”程序开始,逐渐接触更复杂的类结构,甚至运用Spring、Hibernate等开源框架构建企业级应用,如...
本项目“jvmjava”是一个开源项目,由Java语言实现,目的是为了让开发者能够更深入地理解JVM的工作原理,并提供了一个动手实践的机会。 一、JVM概述 Java虚拟机(JVM)是Java平台的核心,它负责执行字节码,提供了...
- **一个运行中的实例**:指的是特定JVM实现的某次运行实例。 - **技术兼容**:输入为符合规范的Class文件,可以执行Java程序外的其它语言编译后的文件。 #### 2. JVM与JRE、JDK的关系 - **JVM**:负责执行Class...
1. 参数调整:通过设置JVM启动参数,如-Xms、-Xmx控制堆大小,-XX:+UseG1GC选择垃圾收集器,-XX:MaxHeapFreeRatio、-XX:MinHeapFreeRatio设定内存利用率等。 2. 内存调优:根据应用特点调整新生代、老年代的比例,...
1. **启动VisualVM**:将gp-jvm解压后,找到VisualVM的可执行文件,启动应用。 2. **连接到JVM**:选择"Local"选项,VisualVM会自动检测并列出正在运行的Java进程。选择你要分析的应用进程,点击连接。 3. **监控...
此外,文档的结构化布局使得内容条理清晰,即使是初学者也能够逐步建立起对JVM内存管理的全面认识。通过这份白皮书的学习,读者将能够深入理解JVM内存管理的复杂性,并掌握处理内存问题的有效方法。
Hotspot是Oracle JDK和OpenJDK中的一个JVM实现,以其高效性能和优化能力而著称。本文将深入探讨OpenJDK中的JVM Hotspot实现源码,帮助读者理解其内部机制和优化策略。 首先,Hotspot JVM的核心设计理念是“热Spot”...
1. **COPYRIGHT**:这个文件通常包含软件的版权信息和许可协议,详细列出了SAP JVM的知识产权归属以及用户可以如何合法使用该软件。了解这些信息对于遵循法律和避免潜在的侵权行为至关重要。 2. **README.txt**:这...
本手册旨在为初学者提供关于 JVM 的基础知识,重点介绍 JVM 内存模型中的关键概念。 #### JVM 内存模型概览 JVM 在执行 Java 程序的过程中,将其所管理的内存划分为几个不同的区域,每个区域有其特定的功能和生命...
### 知识点总结 #### 1. 高级语言虚拟机 (JVM) 概念及...这些内容不仅对初学者友好,也为专业人士提供了深入理解JVM机制的机会。通过上述总结,读者可以更好地理解JVM的相关概念和技术细节,并应用于实际开发工作中。
然而,这个简单的实现旨在帮助初学者理解JVM的基本工作原理,通过实践加深对Java字节码执行的理解。 总结来说,"JVM.rar_jvm_jvm 实现"项目是一个简化版的Java虚拟机实现,重点关注了基本的字节码解析、操作数栈的...
本资源“jvm快速入门”旨在帮助初学者快速理解JVM的工作原理,掌握其核心概念,从而在Java开发的道路上迈出坚实的步伐。下面我们将深入探讨JVM的相关知识点。 1. **JVM架构**:JVM由类装载器、运行时数据区、执行...
"蚂蚁课堂-JVM快速入门2"这个课程显然旨在帮助初学者迅速掌握JVM的基础知识,特别是关于JVM参数的设置和内存溢出问题的处理。 首先,我们来深入了解JVM参数。JVM参数是用来配置和调整JVM行为的关键工具。它们分为两...
随着Java技术的不断发展,Java虚拟机(JVM)已成为软件开发人员不可或缺的核心技能之一。对于初学者而言,掌握JVM的基础知识不仅可以帮助深入理解Java语言的工作原理,还能为解决实际开发中遇到的问题提供强大的工具。...
Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。作为新手,了解JVM的工作原理和优化...对于初学者来说,这是一个很好的起点,逐步掌握JVM将有助于成为一名优秀的Java开发者。
《深入解析NeatJVM:Java中的JVM实现》 在Java编程领域,JVM(Java虚拟机)是每一个开发者必须了解的关键组成部分。...无论你是初学者还是经验丰富的开发者,NeatJVM都是一个值得探索和学习的宝贵资源。
Java虚拟机(JVM)是Java技术的核心组成部分之一,它是一个抽象的计算机,可以在任何操作系统上运行Java字节码(.class文件)。JVM的主要功能包括: 1. **字节码解释执行**:JVM负责读取并解释执行由Java编译器生成...
Java虚拟机(JVM)规范和Java语言规范是Java开发者深入理解这个平台和技术的基石。这两部分规范分别定义了Java...无论是初学者还是经验丰富的开发者,都应该将这两个规范作为必备的参考资料,以提升自己的专业技能。
本文将深入探讨JVM的工作原理,帮助初学者理解和掌握这一关键概念。 一、JVM结构 JVM主要由以下几个核心组件构成: 1. **类加载器(Class Loader)**:负责加载类文件,将.class文件转换为内存中的类对象。 2. **...