美文网首页
JVM虚拟机原理简述

JVM虚拟机原理简述

作者: 翻身小白菜 | 来源:发表于2020-08-05 22:17 被阅读0次

JVM组成架构

Java之所以可以实现跨平台运行,是因为运行在JVM虚拟机上,JVM屏蔽了底层系统的不同,为Java字节码文件构造了一个统一的运行环境。
其组成结构如下:


类加载器将对应.class 文件装在到方法区
当进入一个方法时,创建方法栈针,放到Java栈中顶部,局部变量也在栈中。
如果方法中有New class, 放入到中。创建的对象都放入堆中。
程序计数寄存器,记录执行到哪一行指令。
指令是java自己的指令,需要执行引擎将java的指令变成依赖的系统对应的指令。
java不同环境下,执行引擎不同,是本地编译出来的。
.class字节码文件,在不同到平台上是一样的。执行引擎,把.class变成本地代码执行。

Java字节码

Java可以在不同平台上运行,因为不同平台都是在执行.class文件。
字节码执行流程:


字节码指令给执行引擎,如果编译过会直接执行。若没有编译过,看方法调用计数器,如果次数超过阈值,则编译字节码,编译成可执行指令,放入code cache;如果没有超过,给解释器,解释器将字节码解释成多行本地指令,交给本地方法执行。
这里注意,“执行编译后的机器码”来源于“code cache”。
字节码文件编译过程:

类似于Sql的编译过程。源文件词法分析得到token流。通过语法分析,变成语法树。对语法树进行语义分析,生成字节码。生成的字节码,为虚拟机可执行的指令。

类加载器

字节码通过类加载器加载到JVM的方法区。JVM使用双亲委托模型,即,低层次的当前类加载器,不能覆盖更高层次类加载器已经加载的类。


堆&栈

类似于操作系统的堆栈。JVM有唯一的堆。每个线程有独立的栈。对象在堆中分片,但是引用在栈中

方法区&程序计数器

方法区存放加载进来的类字节码。程序运行方法区中的指令时,每个线程有自己的程序计数器,记录自己执行到的指令。

线程工作内存 & volatile


Java内存模型规定所有的变量都是存在主存当中,每个线程都有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行,而不能直接对主存进行操作。线程操作主内存变量,需要通过线程独有的工作内存拷贝主内存变量副本来进行。
volatile 修饰的变量,写一定会刷到主内存,读一定从主内存中读。
保证多CPU情况下,多线程对同一变量可见。不过要注意,volatile只是保证对所有线程可见,但是线程是不安全的。只保证可见性,不保证线程安全性。

垃圾回收

参考:https://xie.infoq.cn/article/c265f3fde4a8bec04485f6ca1

相关文章

  • JVM虚拟机原理简述

    JVM组成架构 Java之所以可以实现跨平台运行,是因为运行在JVM虚拟机上,JVM屏蔽了底层系统的不同,为Jav...

  • JVM原理简述

    一.运行时数据区域 Java虚拟机管理的内存包括几个运行时数据内存:方法区、虚拟机栈、堆、本地方法栈、程序计数器,...

  • Jvm内存

    本篇重点讲解JVM内存管理和垃圾回收,如下图JVM的基本结构: 首先理解下JVM工作原理 JVM俗称java虚拟机...

  • 说说JVM原理?内存泄漏与溢出的区别?何时产生内存泄漏?

    1、JVM原理 JVM是Java Virtual Machine(Java虚拟机)的缩写,它是整个java实现跨平...

  • 架构师训练营第9周作业 JVM垃圾回收 秒杀架构

    请简述JVM垃圾回收原理 所谓垃圾回收,指的是JVM将堆空间中不再使用的对象清理掉的过程,这是由JVM自动完成的。...

  • 系统架构师-jVM调优学习笔记

    JVM原理 什么是JVM 虚拟机、字节码、平台无关 java内存模型:JMM JVM运行时的数据区 程序计数器 -...

  • 书单

    《揭秘Java虚拟机:JVM设计原理与实现》(10分)分析 hotspot jvm 的实现(c/c++层)内存模型...

  • JVM虚拟机原理

    JVM虚拟机原理 JVM概念 基本概念 JAVA虚拟机是指通过软件模拟的具备完整硬件系统功能的、运行在一个完全隔离...

  • JVM和Dalvik的区别

    jvm是java虚拟机,用来运行.class文件,其运行原理基于堆栈;dalvik是运行Android的虚拟机,其...

  • 深入理解Java虚拟机看这一篇就够了

    前言本文重点对JVM虚拟机底层原理进行全面讲解,从JVM内存结构、堆的分代与垃圾回收算法、JVM性能调优,帮助大家...

网友评论

      本文标题:JVM虚拟机原理简述

      本文链接:https://www.haomeiwen.com/subject/rzzorktx.html