jvm结构介绍

当然可以,JVM(Java Virtual Machine,Java虚拟机)是Java语言的核心组件之一,它负责将Java字节码转换为特定平台上的机器码

JVM结构

  1. 类加载子系统(Class Loader Subsystem)

• 类加载器(Class Loader):负责将Java类的字节码加载到JVM中,并转换为运行时数据结构(如方法区中的类元数据信息)。

• 双亲委派模型(Parent Delegation Model):类加载器加载类时采用的一种策略,从父类加载器开始加载,如果父类加载器找不到类,再由子类加载器加载。

  1. 方法区(Method Area)

• 类元数据(Class Metadata):存储已加载类的信息,如类名、父类名、接口名、方法信息、常量池等。

• 运行时常量池(Runtime Constant Pool):存储编译期生成的各种字面量和符号引用。

• 静态变量(Static Variables):类的静态成员变量在方法区分配内存。

  1. 堆(Heap)

• 年轻代(Young Generation):包括Eden区和两个Survivor区(通常称为S0和S1),用于存放新生成的对象。

• 老年代(Old Generation):存放生命周期长的对象。

• 永久代/元空间(PermGen/Metaspace,Java 8及以后为Metaspace):在Java 8之前,用于存放类的元数据信息;在Java 8及以后,元空间被移到了本地内存(Native Memory)。

  1. 栈(Stack)

• 线程私有栈(Thread Private Stack):每个线程都有一个独立的栈,用于存放线程执行时的局部变量、操作数栈、动态链接、方法出口等信息。

• 栈帧(Stack Frame):方法调用时,会在栈中创建一个栈帧,用于存放该方法执行时的局部变量表、操作数栈等信息。

  1. 程序计数器(Program Counter Register)

• 当前线程执行的字节码的行号指示器:记录当前线程所执行的字节码的行号,用于控制循环、分支、异常处理等。

  1. 本地方法接口(Native Method Interface, NMI)

• JNI(Java Native Interface):允许Java代码与用其他编程语言(如C、C++)编写的本地代码进行交互。

  1. 垃圾收集器(Garbage Collector, GC)

• 标记-清除(Mark-Sweep):一种垃圾收集算法,首先标记所有可达对象,然后清除未标记的对象。

• 复制(Copying):将内存分为两块,每次只使用其中一块,当这块内存用完时,就将还存活的对象复制到另一块内存中,然后清除当前使用的内存。

• 标记-整理(Mark-Compact):标记所有可达对象,然后移动它们到内存的一端,清除另一端未标记的对象。

• 分代收集(Generational Collection):根据对象的生命周期长短,将内存分为年轻代和老年代,对不同代的对象

相关推荐
2601_962071573 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm
用户094248568039 小时前
第23章:OpenJDK逃逸分析、标量替换与锁优化
java·jvm
wuminyu9 小时前
LockStack在虚拟线程Mount和Unmount拷贝过程剖析
java·linux·c语言·jvm·c++
2601_9620715714 小时前
类变量和全局变量的隔离性有什么区别?
java·开发语言·jvm
估值探索者16 小时前
【Python量化系统工程实战 #01】数据存储选型 CSVSQLiteMySQL 对比与 SQLite 实战建库
开发语言·jvm·python·sqlite·api接口·数据api接口·股票数据api接口
打工仔折腾 AI1 天前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
用户094248568031 天前
第22章:JIT编译分层——Interpreter、C1、C2与热点探测
java·jvm
乌暮1 天前
JVM 原理与实践:从运行时数据区到线上故障排查
java·开发语言·jvm·后端·学习·面试
长河2 天前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
可乐ea2 天前
GitHub Security Lab 开源 Fuzzing Taskflow:让 LLM 智能体自己跑完 C/C++ 模糊测试
jvm·c++·github·模糊测试·mcp·代码agent·智能体自动化