Java虚拟机

对JVM的简单学习,文章里的图片来自B站的一个视频,具体视频地址给忘记了hhhh

JVM结构

可以使用命令javap -c SOURCE.class > TARGET对字节码文件进行反编译

1. 类装载子系统

2. 运行时数据区(内存模型)

线程共享:堆和方法区,线程私有:栈、本地方法栈和程序计数器

  • 堆,new出来的对象,调优的重点区域
  • 栈(线程),里面包含了多个栈帧,一个方法一块栈帧,一个栈帧里包括了
    • 局部变量,存储局部变量 [1]
    • 操作数栈,存储操作数
    • 动态链接,把符号引用转为直接引用 [2]
    • 方法出口
  • 本地方法栈,调用其他语言实现方法开辟的空间
  • 方法区(元空间),常量池、静态变量和类信息(class) [3]
  • 程序计数器(线程),指向将要执行代码的行号(内存地址),多线程切换使用

3. 字节码执行引擎

执行方法区中的类信息,动态修改程序计数器的值执行GC


  1. 局部变量表存储对象在堆中的引用。

  2. 例如,将对方法的引用转变为方法的地址。

  3. 方法区存储静态对象在堆中的引用。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容