当前位置: 首页 > news >正文

JVM学习第一篇

一、JVM整体架构

1.JVM组层

JVM(虚拟机):指以软件的方式模拟具有完整硬件功能、运行在一个完全隔离环境中的完整计算机系统,是物理机的软件实现。

JVM由三个主要的子系统构成

  • 类加载子系统
  • 运行时数据区(内存结构)
  • 执行引擎

Snipaste_2026-05-25_21-43-15

2.线程包含的私有内存

程序计数器、Java栈、本地方法栈
Snipaste_2026-05-25_21-53-26

class StudyJVM {public static final Integer CONSTANT_1 = 666;public static void main (String [] args) {StudyJVM studyJVM = new StudyJVM();int count = studyJVM.method1();}public int method1() {method2();int a = 1;int b = 2;int count = (a + b) * 10;return count;}public void method2() {System.out.println("end");}     
}

Java 栈的运行流程

main方法栈帧先压入java栈。main方法调用method1方法,然后method1方法压入栈帧。method1方法调用method2方法,然后method2方法压入栈。method2执行完出栈,method1执行完出栈,main方法执行完出栈。

3.栈帧

局部变量、操作数栈、动态链接、方法出口

Snipaste_2026-05-26_09-55-20

# 将StudyJVM.class 编译成易读的文件到 studyJVM.txt
# 主要功能为分解Java编译生成的class文件,用于查看字节码或进行反编译操作
javap  -c StudyJVM.class > studyJVM.txt
Compiled from "StudyJVM.java"
class org.example.StudyJVM {public static final java.lang.Integer CONSTANT_1;org.example.StudyJVM();Code:0: aload_01: invokespecial #1                  // Method java/lang/Object."<init>":()V4: returnpublic static void main(java.lang.String[]);Code:0: new           #2                  // class org/example/StudyJVM3: dup4: invokespecial #3                  // Method "<init>":()V7: astore_18: aload_19: invokevirtual #4                  // Method method1:()I12: istore_213: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;16: iload_217: invokevirtual #6                  // Method java/io/PrintStream.println:(I)V20: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;23: ldc           #7                  // String end25: invokevirtual #8                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V28: returnpublic int method1();Code:0: aload_01: invokevirtual #9                  // Method method2:()V4: iconst_15: istore_16: iconst_27: istore_28: iload_19: iload_210: iadd11: bipush        1013: imul14: istore_315: iload_316: ireturnpublic void method2();Code:0: getstatic     #5                  // Field java/lang/System.out:Ljava/io/PrintStream;3: ldc           #10                 // String start5: invokevirtual #8                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V8: returnstatic {};Code:0: sipush        6663: invokestatic  #11                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;6: putstatic     #12                 // Field CONSTANT_1:Ljava/lang/Integer;9: return
}
 public int method1() {method2();int a = 1;int b = 2;int count = (a + b) * 10;return count;}
4: iconst_1
5: istore_1
6: iconst_2
7: istore_2
8: iload_1
9: iload_2
10: iadd
11: bipush        10
13: imul
14: istore_3
15: iload_3
16: ireturn

二、JVM类加载器

三、JVM内存结构

四、JVM执行引擎

http://www.gsyq.cn/news/1390310.html

相关文章:

  • 告别纯视觉分析:如何将DEM高程数据融入CNN,提升滑坡识别准确率?
  • 终极英雄联盟自动化工具指南:5分钟解放双手,告别繁琐游戏操作
  • 初创公司如何借助Taotoken以更低成本快速验证AI产品创意
  • 西安黄金回收指南:2026年避坑手册与机构推荐 - 上门黄金回收
  • 普祥健康冲刺港股:年营收4.7亿 净利降24% 王伟斌控制74%股权
  • Windows 11系统优化终极指南:使用Win11Debloat实现一键去广告与性能提升
  • 从陀螺到航天器:角动量定理的工程应用与守恒律解析
  • Cadence 17.4 初体验:从暗黑主题到稳定性滑坡的深度剖析
  • 3个隐藏功能让B站字幕提取效率提升10倍:BiliBiliCCSubtitle完全指南
  • OpenAI O3:GPT-4 Turbo推理稳定性增强机制详解
  • 第三篇:《Docker 安装与配置指南(Linux / Windows / macOS)》
  • LRCGET:为你的离线音乐库一键注入灵魂歌词
  • i.MX RT1052双工程实战:Debug放SDRAM,Release存Flash,MCUXpresso SDK 2.8.0配置详解
  • 气体放电管(GDT)选型与防护设计:从浪涌抑制到系统可靠性全面提升
  • 别再让FTP卡壳了!华为防火墙ASPF功能保姆级配置指南(附eNSP实验拓扑)
  • QuickSight企业级BI实战:SPICE语义层、NLQ自助分析与RLS数据治理
  • 打卡信奥刷题(3320)用C++实现信奥题 P9202 「GMOI R2-T2」猫耳小(加强版)
  • 打卡信奥刷题(3319)用C++实现信奥题 P9188 [USACO23OPEN] Pareidolia S
  • 51单片机驱动继电器模块,除了点灯还能玩什么?5个创意应用思路分享
  • 上海凤金实业:上海电梯拆除公司 - LYL仔仔
  • Python开发者三步完成TaotokenOpenAI兼容SDK接入
  • 从家庭结构变化——看人类的人性承载机制《文字定律》随笔
  • AI编码代理实战:一个月副业项目交付全流程与避坑指南
  • 终极指南:快速解密QQ音乐加密格式,实现qmcflac转mp3完整解决方案
  • 如何用NMRPFlash拯救变砖的Netgear路由器:完整修复指南
  • 3分钟搞定Windows激活:智能KMS工具让系统永久告别烦人水印
  • # 2026年国内广东广州地区亚马逊精品运营五大品牌排名及解析 - 十大品牌榜
  • 闪回科技冲刺港股:年营收17.7亿,净亏7899万 小米与顺为是股东
  • 3PEAK思瑞浦 TP1564AL1-TS2R-S TSSOP14 运算放大器
  • WeChat Toolbox:终极自动化微信管理解决方案