整体架构
当一个java类文件被jvm装载进来,就需要创建对象,涉及到内存管理了。先来看看jvm内部的体系结构
pc寄存器
对汇编有一定了解的同学都明白这个概念。我们可以简单把它看做是当前线程所执行的字节码的行号。有什么用呢。当执行完一条指令的时候,需要跳转到下一条指令,就得靠它了
java虚拟机栈
是线程私有的,跟线程的生命周期相同。描述的是一个java方法执行的内存模型:当一个方法被执行的时候,就会创建一个栈帧(stack frame)用于存储局部变量列表、操作数栈、动态链接(即一些类或者方法的引用)、方法出口信息等。一个方法被调用到完成的过程,就是一个栈帧在jvm栈入帧到出帧的过程
Java堆
这个是我们最熟悉的了,所有对象的创建都在这个区域。垃圾回收的重点区域也在这一款。这个区域我们可以再细分一下:新生代(Eden、From Survivor 和 To Survivor)和老年代。对象最早是分配在Eden区域的,当执行了一次min gc时,就会将该对象转移到其中一个Survivor。当对象存活一定时间后,可能被移到老年代。当老年代内存不足时,会引发Full GC。这就是大概的垃圾回收过程。详细的过程,我会在之后的blog中介绍
本地方法栈
顾名思义,本地方法是跟调用本地方法相关的
方法区
存储一些公共信息:类信息、常量、静态变量,即时编译后的代码
对象的访问
句柄式。堆中会划分出一块内存作为句柄池,对象的引用其实是对象的句柄地址。通过它找到了句柄,句柄包括了对象实例数据(堆中)和类型数据(属于方法区)的具体地址。好处是对象的移动改变指针就行,对象的引用不需要改变
直接指针访问。对象就包括类型数据(属于方法区)的地址和实例数据。所以通过对象的引用就直接在java堆中找到了对象。好处是速度更快,跟句柄式的访问相比,少了一次指针定位的开销。Sun hosport就是采用这种方式的
参考资料
1.深入java虚拟机
2.深入理解java虚拟机
分享到:
相关推荐
### JVM学习笔记 #### JVM内存模型 (JMM) JVM内存模型主要分为以下几个部分: - **Java堆**:这是所有线程共享的一块区域,在虚拟机启动时创建。主要用于存放对象实例,几乎所有的对象实例都在这里分配内存。 - *...
《JVM内存管理学习笔记》 在Java世界中,JVM(Java Virtual Machine)是运行所有Java应用程序的核心。深入理解JVM内存管理对于优化程序性能、预防和解决内存泄漏问题至关重要。本文将从JVM内存模型、内存区域划分、...
本篇JVM学习笔记主要涵盖了以下几个核心知识点: 1. **运行时数据区**: - **程序计数器**:记录当前线程执行的字节码的行号,用于线程恢复执行时跳转到正确位置。 - **Java虚拟机栈**:每个方法执行时创建的栈帧...
本篇JVM学习笔记主要关注对象声明、相关内存分配方法以及虚拟内存的物理和虚拟寻址概念。 首先,我们来看对象声明。在Java中,对象是在堆上创建的。例如,`CHeapObj` 类展示了如何在C++中模拟Java对象在堆上的分配...
JVM的学习可以从其基本结构、代码编译和执行过程,以及内存管理和垃圾回收机制三个方面进行深入探讨。 首先,JVM的基本结构分为逻辑结构和物理结构。逻辑结构主要包括Java源码编译器、JVM执行引擎、类加载器等组件...
Java虚拟机(JVM)是Java程序的核心组成部分,它负责执行字节码并管理内存。在JVM的学习中,理解其内存模型、垃圾收集算法以及类加载机制至关重要。 1. **JVM内存模型** - **方法区**:也称为“永久代”,存储...
本文将深入探讨JVM的内存管理,特别是垃圾回收机制,以及相关的优化策略。 首先,我们要了解JVM的内存结构。Java内存主要分为堆内存和栈内存两大部分。堆内存主要用于存储对象实例,而栈内存则存储方法调用时的局部...
4. **垃圾收集**:JVM如何自动管理内存,理解不同垃圾收集器如Serial、Parallel、CMS、G1等的工作机制,以及新生代和老年代的概念。 5. **类加载器**:系统类加载器、扩展类加载器和应用程序类加载器之间的双亲委派...
**JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM:...
4. 垃圾收集:JVM的自动内存管理关键在于垃圾收集,包括可达性分析、标记-清除、复制、标记-整理、分代收集等算法,以及新生代、老年代、永久代(或元空间)等区域划分。 5. 类型系统:JVM支持基本类型、引用类型...
本文将深入探讨JVM的工作原理,包括内存管理、类加载机制、垃圾回收以及性能优化等方面。 首先,我们来理解JVM的内存结构。在JVM中,内存被分为堆内存和栈内存两大部分。堆内存主要用于存储对象实例,而栈内存则...
这份"Java学习笔记_内存管理.pdf"很可能是详细解析了Java如何进行内存分配、垃圾回收以及内存泄漏等相关概念。下面,我们将深入探讨Java内存管理的一些核心知识点。 1. **Java内存模型**: - **堆内存(Heap)**:...
3. **Java 2 Platform, Standard Edition (J2SE)**:2000年,J2SE发布,引入了更多的JVM优化技术,如JIT编译器的进一步改进和内存管理的优化。 4. **Java 5.0与泛型**:2004年,Java 5.0引入了泛型、枚举、自动装箱...
《JVM学习笔记》 Java虚拟机(JVM)是Java平台的核心组成部分,它负责运行所有的Java应用程序。这篇笔记将深入探讨JVM的工作原理、内存管理、类加载机制以及优化策略,帮助读者全面理解JVM并提升Java程序的性能。 ...
这份笔记涵盖了JVM的基础概念、内存管理、类加载机制、性能优化等多个方面,对于理解Java程序的运行机制以及提升开发效率具有重要的指导意义。 一、JVM基础 Java虚拟机(JVM)是Java程序运行的核心,它提供了平台...
### JAVA内存管理机制详解 #### 一、JAVA内存管理机制概述 Java的内存管理机制是其强大特性之一,尤其体现在其自动垃圾收集功能上。在Java中,内存主要分为两大块:栈(stack)和堆(heap)。栈内存主要用于存储...
Java虚拟机(JVM)是Java程序运行的核心,它的内存结构对于理解和优化Java应用程序的性能至关重要。本笔记将深入探讨JVM内存的...这份"JVM内存结构笔记"将详细阐述这些内容,是学习和研究JVM内存管理的重要参考资料。
这份“JVM的学习笔记PDF版”应该包含了关于JVM的详细信息,帮助学习者深入理解这个复杂的系统。JVM允许Java代码跨平台运行,通过解释器、类加载器、垃圾收集器等组件实现“一次编写,到处运行”的理念。 1. **JVM...
本文将根据"JVM性能学习笔记思维导图"的主题,详细阐述JVM的主要组成部分,性能调优的关键点以及相关的工具与实践策略。** 1. **JVM结构与内存模型** - **类装载器(ClassLoader)**:负责加载类文件,确保类在运行...
Java虚拟机(JVM)作为Java程序的运行环境,负责管理和分配内存资源。为了更好地理解和掌握JVM内部的工作机制,本篇文章将重点介绍JVM中的几个关键内存区域:程序计数器、Java虚拟机栈、本地方法栈、堆以及方法区。 #...