JVM实现原理

article/2025/8/19 22:59:35

JVM原理

  • 1、概念简介
  • 2、为什么要学习JVM虚拟机?
  • 3、JVM怎么学?
    • 3.1 内存管理
      • 1、jvm运行时数据区

1、概念简介

  • JVM:JAVA虚拟机
  • JRE:Java运行环境
    JRE=JVM虚拟机+Java核心类库+支持文件
  • JDK:Java开发工具包
    JDK=JRE+Java工具+Java类库

2、为什么要学习JVM虚拟机?

  • 面试
  • 提供性能,排除问题
  • 写更好的程序代码

3、JVM怎么学?

3.1 内存管理

  • jvm运行时数据区
  • jvm内存模型
  • jvm内存回收

1、jvm运行时数据区

  • 程序计算器
    指向当前线程正在执行的字节码指令的地址(行号)
    作用:线程容易被中断。
  • 虚拟机栈
    虚拟机栈:存储当前线程运行方式时所需要的数据,指令,返回地址。
    栈帧:一个方法的运行空间
    -Xss:每个线程的栈大小。

在这里插入图片描述
栈:先进后出,入栈和出栈只有一个出口
在这里插入图片描述
将局部变量,算法,返回值进行入栈出栈。

  • 本地方法栈
    其实就是虚拟机栈
    本地方法栈和虚拟机栈类似
    本地方法栈存储的是native方法,例如hashCode()方法。

  • 存放所有的对象实例和数组
    设置参数:启动时分配的内存大小-xms,xmx
  • 方法区
    类信息
    静态变量
    常量

在这里插入图片描述
2、说下JVM运行时数据区
不同虚拟机的运行时数据区可能略微有所不同,但是会遵守Java虚拟机规范,Java虚拟机规范规定的区域分为以下5个部分:

程序计算器:Program Counter Register,当前线程所执行的字节码的行号指示器,字节码解析器的工作是通过改变这个计数器的值,来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能,都需要依赖这个计数器来完成。
Java虚拟机栈Java Virtual Machine Stacks,用于存储局部变量表,操作数栈,动态链接,方法出口灯信息。
本地方法栈Native Method Stack:与虚拟机栈的作用是一样的,只不过虚拟机栈是服务Java方法的,而本地方法栈是为虚拟机调用Native方法服务的。
Java堆Java Heap:Java虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象的实例都在这里分配内存。
方法区:Method Area,用户存储已被虚拟机加载的类信息,常量,静态常量,即时编译后的代码等数据。

共享数据区包括堆和方法区。
JMM的概念
多线程数据共享
永久代这里是指方法区,也叫做元数据
在这里插入图片描述
在这里插入图片描述
注意新生代与老生代的比例
Eden与from、to的比例
在这里插入图片描述
在这里插入图片描述
新生代内存不足的时候会触发GC
在这里插入图片描述
老年代是存放应用程序中生命周期长的数据。
2次 GC不能清理的数据,先移动到from区,再经过5GC,移动到to区,再经过10次GC仍然无法释放,那么数据被移动到老年代。
在这里插入图片描述
jconsole.exe的使用
在这里插入图片描述
判断不可达就会被回收GC
在这里插入图片描述
内存泄漏和内存溢出的辨析
下面这个是内存溢出:
在这里插入图片描述
线程执行完了,区域的数据对象还无法释放就是内存泄漏
在这里插入图片描述
没有下面的红色框内的代码就会出现内存泄漏。

在这里插入图片描述
测试题:结果是false
在这里插入图片描述

在这里插入图片描述


http://chatgpt.dhexx.cn/article/gO48sHLv.shtml

相关文章

【JVM调优】JVM原理与性能调优

一、参考资料 今日头条https://www.toutiao.com/i7007696978586976805

JVM原理和调优的理解和学习

JVM原理和调优的理解和学习 一、详解JVM内存模型二、JVM中一次完整的GC流程是怎样的三、GC垃圾回收的算法有哪些四、简单说说你了解的类加载器五、双亲委派机制是什么,有什么好处,怎么打破六、说说你JVM调优的几种主要的JVM参数七、JVM调优八、类加载的机…

JVM原理-jvm内存模型

一、jvm内存模型 结构图 JVM包含两个子系统和两个组件 Class loader(类装载子系统) 根据给定的全限定名类名(如:java.lang.Object)来装载class文件到 Runtime data area运行时数据区中的method area方法区中Execution engine(执行引擎) 执行classes中的指令Runt…

JVM原理-垃圾回收机制及算法

JVM原理-jvm内存模型 jvm内存模型 一、垃圾回收机制算法 1、 判断对象是否回收算法 垃圾收集器在做垃圾回收的时候,首先需要判定的就是哪些内存是需要被回收的,哪些对象是存活的,是不可以被回收的;哪些对象已经死掉了&#xf…

jvm面试原理

1、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

JVM原理和JVM内存的整理

JVM原理及JVM内存 JVM原理及JVM内存概念这么说1.JVM的基本过程2.JVM的中的“解释”原理,三个重要机制3.JVM的体系结构4.运行时数据区JVM垃圾回收 JVM原理及JVM内存 之前看了许多JVM原理的文章、写作的大牛们都讲的很透彻,但是私下觉得:写得详…

JVM原理和调优(读这一篇就够了)

前言 抛2个问题: 1、export JAVA_OPTS"-Xms256m -Xmx512m -Xss256m -XX:PermSize512m -XX:MaxPermSize1024m -Djava.rmi.server.hostname136.64.45.24 -Dcom.sun.management.jmxremote.port9315 -Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.manageme…

JVM工作原理

JVM的生命周期 (1)两个概念:JVM实例和JVM执行引擎实例 JVM实例对应了一个独立运行的java程序,它是进程级别的 JVM执行引擎实例则对应了属于用户运行程序的线程,它是线程级别的 (2)VM实例的诞生…

JVM原理与实战

JVM原理 类加载流程和内存分配栈帧操作一、JVM垃圾回收算法主动加载的几种方式?符号引用和直接引用1.1 什么是垃圾(Garbage Collection)回收?1.2 引用计数法(Reference Conting)1.3 标记清除法 *(Mark - Sweep)1.4 复制算法 *(Copying)1.4.1 复制算法在JVM中的应用1.…

jvm原理与性能调优

文章目录 一、JVM内存结构 1.运行时数据区 2.直接内存 二、JVM中的对象 1.对象的创建 2.对象的内存布局 3.对象的访问定位 三、垃圾回收算法和垃圾回收器 1. 如何判断对象是已死 2.分代回收理论 3.垃圾回收算法 4.垃圾收集器 四、JVM执行子系统 1.Class文件结构 2.类加载机制 3…

什么是JVM?深入解析JVM原理!

一、JVM是什么? JVM是Java Virtual Machine(Java虚拟机)的缩写,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息,使得Java程序只需要生成在J…

全面阐述JVM原理

一 JVM入门 1. 什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码…

JVM原理

JVM原理 一.jvm简介 JVM是Java Virual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组…

JVM原理详解

主题内容: 1.JVM 内存区域概览 2.堆区的空间分配是怎么样?堆溢出的演示 3.创建一个新对象内存是怎么分配的? 4.方法区 到 Metaspace 元空间 5.栈帧是什么?栈帧里有什么?怎么理解? 6.本地方法栈 7.程序…

JVM的运行原理

目录 1.概念 2.JVM运行机制 3.JVM执行流程 4.JVM运行时数据区 什么是线程私有? OOM(内存溢出) 4.1 堆:也叫运行时数据区,线程共享 4.2 方法区:线程共享 4.3 Java虚拟机栈:线程私有,描…

JVM的原理

JVM原理(一) 1、JVM总体结构图 2、JVM堆结构图以及分代 复制算法: 1、新生成的对象存放在Eden区和from区 2、当Eden区内存不够,虚拟机将发起一次MinorGC 3、GC进行时,Eden区中所有存活的对象都会被复制到to区 4、年龄阀值达到15的会被放到老年…

JAVA虚拟机JVM工作原理

提起JAVA,都知道它有个虚拟机,因此可以跨平台,一次编写,到处运行。但具体原理是咋样的?身为JAVA小白,岂可不知! 一、原理 二、结构 1、类加载器 2、执行引擎 3、运行时数据区域一、原理 JVM实现…

JVM 运行机制及其原理

最近出去面试,总被问到Java JVM相关的东西,什么JVM的内存模型、JVM的内存分配、内存回收、内存回收算法…搞得我一头雾水,早些年还看过一些,蹭着有时间给大家也给自己总结下JVM相关的知识。 JVM JVM是Java Virtual Machine&…

JVM原理-超详细总结

JVM概念 JVM是java的核心和基础在java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,可以在上面执行java的字节码程序。java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经…

2022年iOS最新面试(底层基础)问题答案

文章目录 Runloop 1、RunLoop 的本质是什么?2、Runloop和线程是什么关系?3、Runloop的底层数据结构是什么样的?有几种 运行模式(mode)?每个运行模式下面的 CFRunloopMode 是哪些?他们分别是什么…