美文网首页
JVM(一)

JVM(一)

作者: NamelessPeople | 来源:发表于2021-02-20 15:41 被阅读0次

JVM 全称 Java Virtual Machine

image.png
特性:
跨平台:class文件可以在不同操作系统上执行都是一样的,所以不同平台的就有不同版本的JDK版本。
跨语言:JVM和语言是解耦的,只要语言(Groovy 、Kotlin、Jruby)能编译成字节码,就可以在JVM上运行。

JVM、JRE、JDK关系
JVM :只是一个翻译,将字节码翻译成操作系统能识别的代码。
JRE :除了包含JVM外,还提供了很多的类库(就是jar包,文件操作、网络请求等),这些就注册了Java运行环境(Java Runtime Environment)。
JDK :对程序员来说,还学要需要编译(javac)、调试(java)、打包(jar)、反编译(javap)等操作,这些都是JDK提供。

image.png

JVM整体

一个java程序,先经过javac编程成.class文件,然后jvm将它加载到方法区执行引擎执行这些字节码。


image.png
运行时数据区

主要包括,方法区、堆、虚拟机栈、本地方法栈、程序计数器


运行时数据区

1.程序计数器
线程中用来记录程序的字节码的地址。例如:分支,循环,跳转,异常,线程恢复都依赖计数器。
线程之间会根据时间片轮询争夺cpu。线程的时间片用完,记录该位置,下次又获取cpu资源,重记录的位置继续执行。
JVM中唯一不会OOM的内存区域。
2.虚拟机栈
栈是先进后出(FILO)的数据结构
栈帧包含四个区域:
局部变量表:主要存放八大基础数据类型,如果是对象则存放引用地址。(一般是32位,如果是64位就是用高低位占用两个)
操作数栈:jvm运算时入栈出栈操作
动态链接:java语言具有多态特性,需要类运行时才知道具体的方法
出口完成(返回地址):正常返回 :调用程序计数器中的地址作为返回;异常返回:异常处理器表来确定。

image.png

java虚拟机栈是基于线程的,在线程的生命周期中,参与计算的数据会频繁的入栈和出栈,栈的生命周期和线程一样。


javap.png

java里面每一个方法被调用时都会创建一个栈帧,并入栈。调用完成就出栈。当所有栈帧出栈后,线程就结束了。
在jvm中,基于解释执行的这种方式是基于栈(操作数栈)的引擎。

3.本地方法栈
与虚拟机栈相似的一个区域,服务对象是native方法。Hotspot直接将本地方法栈和虚拟机栈合二为一。

4.方法区
方法区是JVM规范中的一部分,Oracle 的 JRockit、IBM 的 J9 就不存在永久代,HotSpot虚拟机中,开发人员用永久代实现了JVM规范的方法区。java8以后用元空间进行代替,元空间存储位置是本地。
主要存放虚拟机加载类相关信息,包括类信息、静态变量、常量、运行时常量池、字符串常量池。

5.堆
申请的几乎所有对象都在堆上。
为什么是几乎呢?对基本数据类型来说,在方法体内声明的对象,会直接栈上分配,其他情况分配在堆上。
普通对象JVM会首先在堆上创建对象,然后在其他地方使用它的引用。
堆在程序启动时就申请了,不一定全部使用。当堆达到一定阈值时,就会对堆进行垃圾回收,也叫gc(Garbage Collection)

相关文章

  • 深入JVM内核 目录

    深入JVM内核 目录 深入JVM内核1 初识JVM深入JVM内核2 JVM运行机制深入JVM内核3 常用JVM配置...

  • JVM介绍系列文章

    知晓JVM系列(一):对JVM总览知晓JVM系列(二):JVM内存管理机制与优化初探知晓JVM系列(三) :常用的...

  • JVM内存模型(jvm 入门篇)

    概述 jvm 入门篇,想要学习jvm,必须先得了解JVM内存模型,JVM内存模型,JVM内存模型,JVM内存模型,...

  • JVM学习笔记

    JVM学习笔记 JVM简介 JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种...

  • JVM(一)初识JVM

    1 什么是JVM JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的...

  • JVM工作原理

    JVM的生命周期## 首先分析一下JVM实例和JVM执行引擎实例的区别JVM实例:JVM实例对应了一个独立运行的j...

  • JVM内存模型

    一、JVM内存模型图解 JVM 运行时数据区 (JVM Runtime Area) 其实就是指 JVM 在运行期间...

  • Jvm(一)-Java虚拟机的内存管理

    [toc] JVM JVM回顾 1. 什么是 JVM JVM是Java Virtual Machine(Java虚...

  • JAVA虚拟机(JVM)三:类加载器子系统

    JAVA虚拟机(JVM)系列:JAVA虚拟机(JVM)一:了解JAVA体系结构JAVA虚拟机(JVM)二:JVM工...

  • JVM

    简介 Jvm 系列一:Java类的加载机制Jvm系列二:JVM内存结构 --内存泄漏与内存溢出Jvm系列三:GC算...

网友评论

      本文标题:JVM(一)

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