> 文档中心 > JVM虚拟机内存区域划分(快速理解)

JVM虚拟机内存区域划分(快速理解)


 JVM内部体系结构分为三部分
 1.类加载器(ClassLoader)子系统。
 2.执行引擎。
 3.运行时数据区。

首先我们要知道当我们写完代码之后所保存的.java文件是如何经过虚拟机的处理再生成最后的01001010这样的字节码文件的,如下图:

  1. .java文件经过编译器编译得到.class文件(编译阶段不涉及JVM)
  2. 编译成功后运行程序,此时实际上就是把.class文件送入JVM
  3. 经过JVM的处理最后生成计算机能”看得懂“的文件

那么我们现在的主题就是研究研究JVM的内存区域(决定了程序中的类、属性、方法等在哪保存)了。

       

类装载器

每一个Java虚拟机都有:

  • 类加载器子系统(classloader subsystem):加载程序中的类型(类和接口),并赋予唯一的名字。
  • 执行引擎(execution engine):执行被加载类中的指令。

用户自定义类加载器必须是classloader类的子类。

执行引擎

作用:执行字节码 or 执行本地方法

运行时数据区

线程共享:(方法区、堆)

线程私有:(虚拟机栈、本地方法栈、pc寄存器(程序计数器))

说明:本地方法是由其它语言编写的,编译成和处理器相关的机器代码。本地方法保存在动态链接库中,即.dll(windows系统)文件中,格式是各个平台专有的。

JVM的内存管理实际上就是管理运行时数据区。