JVM 核心工作原理

首先jvm底层涉及知识过于广泛,这里介绍一个jvm的基础运行流程:

1:java类文件主要通过 类转载子系统 加载到jvm中。

2:将xxx.class文件的 常量、静态变量、类元信息等加载到元空间(方法区)存储起来。

3:然后栈里面存储都栈帧,每个线程都是独立的。里面主要存储:局部遍历表,操作数栈,动态链接,方法出口等核心数据。

4:这里大致介绍一下一个方法的运作流程:主要是通过字节码执行引擎调用程序计数器来执行栈帧里面的方法。main方法程每一行的执行,都是程序计数器记录了执行到哪一行,每一个线程,对应的程序计数器都是独享。

5:方法与发放之间的调用,主要是动态链接存储了当前方法执行的内存地址,可以理解为程序计数器的开始位置。

6:方法执行结束主要是由方法出口记录了方法的下一步对应程序技术器的第几部。然后方法结束时,就可以返回到上一个调用方法的位置。

7:对应的操作数栈就是简单的变量的对应的值,如下图的30、2、1等,局部变量表也就是存储了对应该方法作用域内定义的局部变量。

8:然后对象是如果找到对应的类元信息的。对象里有一个叫对象头的部分,存储了对应该类所对应的内元信息的地址指针。

9:栈里面存储的对象地址,然后实际的对象值,是存放在堆里面。这样也就是会导致对应的堆内存会很大,下一站会专门分析堆里面的内存是如何运转的以及对应的分布情况。

10:这里还有一个就是本地方法栈,也即是jvm底层其实采用的是C和C++开发的。有些方法,需要使用调用底层的Native修饰的方法。对应的方法指针内存存储在本地方法栈中,也是每个线程独享的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介: 目前,Java是最为流行的编程语言之一,它的基础平台就是JVM。除了Java,如JRuby、Scala、Clojure等语言也运行在JVM平台。熟悉和掌握JVM平台有着重要的实用价值和意义。 在本课程中个,将详细介绍JVM的基本原理、组成以及工作方式,并配合实际案例,介绍相关的调优技巧。 课程大纲: 第一课 初识JVM JVM分类 Java语言规范 JVM规范 介绍JVM的基本知识和发展历史,并介绍了Java语言规范和JVM规范。 第二课 JVM运行机制简介 堆、栈、方法区等 JVM启动流程 内存模型和volatile实例 解释和编译运行的概念 介绍JVM的内部结构、启动流程以及内存模型。并介绍JVM字节码的执行方式。 第三课 常用JVM参数 堆的分配参数 栈分配及实例讲解 server与client模式 调试跟踪参数 介绍常用的JVM参数,包括内存分配、堆栈分配、虚拟机运行模式以及调试跟踪参数。 第四课 GC的算法和种类 引用计数 标记清除 复制算法 标记压缩 可触及性 本章是理论性较强的一章,主要介绍GC的基本算法和思想,本章作为下一章节的前序课程。 第五课 GC控制参数 Serial ParNew等GC参数 GC的参数搭配实例分析 介绍GC的设置参数,并分析相关的案列。 第六课 类装载 class装载流程 ClassLoader模式 ClassLoader的使用实例分析 热替换例子 详细介绍ClassLoader的原理和应用。分析2个案例,说明ClassLoader的使用。 第七课 性能监控工具 线程死锁分析 OOM分析 介绍常用的JVM诊断和分析工具,并以死锁和OOM为例,展示这些工具的使用。 第八课 分析Java堆 MAT的使用案例 Jvisualvm介绍使用 介绍了Java堆的分析方法,以一个实例为基础,展示对堆的分析过程。 第九课 锁 baise锁 轻量级锁 自旋锁 介绍JVM中对多线程锁的实现。 第十课 class文件结构 ASM库介绍 介绍JVM规范中的最重要的内容——Class文件结构,同时介绍ASM库的使用以及对class文件的修改。 第十一课 字节码执行 案例以及javap JIT及相关参数 介绍JVM的字节码以及反汇编方法,同时介绍JIT相关的参数和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值