【JVM基础01】——介绍-初识JVM运行流程

目录

  • [1- 引言:初识JVM](#1- 引言:初识JVM)
    • [1-1 JVM是什么?(What)](#1-1 JVM是什么?(What))
      • [1-1-1 概念](#1-1-1 概念)
      • [1-1-2 优点](#1-1-2 优点)
    • [1-2 为什么学习JVM?(Why)](#1-2 为什么学习JVM?(Why))
  • [2- 核心:JVM工作的原理(How)](#2- 核心:JVM工作的原理(How))
    • [⭐2-1 JVM 的组成部分及工作流程](#⭐2-1 JVM 的组成部分及工作流程)
    • [2-2 学习侧重点](#2-2 学习侧重点)
  • [3- 小结(知识点大纲):](#3- 小结(知识点大纲):)
    • [3-1 JVM 组成](#3-1 JVM 组成)
    • [3-2 类加载器](#3-2 类加载器)
    • [3-3 垃圾回收](#3-3 垃圾回收)
    • [3-4 JVM实践](#3-4 JVM实践)

1- 引言:初识JVM

1-1 JVM是什么?(What)

1-1-1 概念

  • J ava V irtual Machine :JAVA运行时环境(java 二进制字节码的运行环境)
  • Java 的二进制字节码的运行环境。我们都知道 Java 代码想要运行的话,就必须得先经过编译,之后编译成 .class 文件才能运行,JVM就是 .class 二进制字节码的运行环境。

1-1-2 优点

  1. 一次编译,到处执行
  • JVM实现一次编译,到处运行的原理是通过屏蔽操作系统的差异来实现的。具体来说,Java代码编译成二进制字节码后,这些字节码在不同操作系统上的JVM中都可以运行。
  • JVM作为一个软件层,运行在操作系统上,无论是 Windows 还是 Linux,真正运行 Java 代码的是JVM 而不是操作系统。因此,JVM 使得 Java 能够跨平台执行,实现了"一次编写,到处运行"。
  1. 自动内存管理,垃圾回收机制
  • JVM的第二个优点是自动内存管理和垃圾回收机制。与C语言需要程序员手动管理内存不同,Java虚拟机通过自动垃圾回收功能,大大减轻了程序员的负担,减少了内存泄漏的风险,从而提高了程序的稳定性和开发效率。

1-2 为什么学习JVM?(Why)

  • 学习 JVM 以便我们能够 深入理解Java,一旦掌握了 JVM,也就知道了 Java 的运行机制,特别对于排查问题的能力将会有大幅度提升。
    • ① 了解 JAVA 运行机制
    • ② 提升排查问题的能力(内存泄漏、CPU飙升等)

2- 核心:JVM工作的原理(How)

⭐2-1 JVM 的组成部分及工作流程


  1. Java源代码到类加载子系统

作用: 将Java源代码转化为JVM能够理解和执行的格式,并将这些格式正确加载到JVM中。

  • Java Source (Java源代码) :编写的 Java 源代码文件,通常以 .java 为扩展名。
  • Java Class (Java类文件) :通过Java编译器(javac)将Java源代码编译成字节码文件,通常以 .class 为扩展名。
  • 类加载子系统 :负责将编译后的 .class 文件加载到 JVM 中,进行加载、验证、准备、解析和初始化。类加载子系统的作用是将 .class 文件转换为 JVM 可以执行的内部表示,并将其放入运行时数据区。

  1. 运行时数据区

作用: 运行时数据区是JVM在执行Java程序时所需的内存区域,包含了程序执行过程中所需的数据和信息。

  • Method Area/MetaSpace (方法区/元空间):存储类结构信息,如运行时常量池、字段和方法数据、方法和构造函数的字节码内容。
  • Heap (堆):用于存储对象实例和数组,是垃圾回收的主要区域。
  • PC Register (程序计数器):记录当前线程正在执行的字节码指令地址。
  • JVM Stacks (虚拟机栈):每个线程私有,用于存储局部变量、操作数栈、动态链接和方法调用等信息。
  • Native Method Stack (本地方法栈):每个线程私有,用于存储本地方法调用的信息。

  1. 执行引擎

作用: 执行引擎负责将字节码转换为机器码并执行,确保Java程序高效运行,并通过垃圾回收机制管理内存。

  • Interpreter (解释器):逐行解释执行字节码指令,将每条字节码指令翻译成相应的机器码并执行。
  • JIT Compiler (即时编译器):将热点代码(频繁执行的代码段)编译成机器码,提高执行效率。
  • GC (垃圾回收):负责自动回收不再使用的对象,释放内存空间,防止内存泄漏。

  1. 本地方法接口和本地库

作用: 本地方法接口和本地库使Java程序能够调用和执行平台相关的功能和库,扩展了Java的能力,使其可以与底层系统进行交互。

  • 本地方法接口 (JNI):允许Java代码调用本地(通常是 C 或 C++)代码,提供与操作系统或其他底层库的接口。
  • 本地库 (Native Libraries) :提供本地方法实现的库文件,通常以动态链接库(如.dll.so)的形式存在。

2-2 学习侧重点

  • 对于 JVM 组成:主要关注 JVM 的运行时数据区。
  • 类加载器:类加载子系统中的类加载器
  • 垃圾回收:运行时数据区堆中对象的回收
  • JVM实践

3- 小结(知识点大纲):

3-1 JVM 组成

3-2 类加载器

3-3 垃圾回收

3-4 JVM实践

相关推荐
Ai 编码助手2 小时前
什么是内存溢出,golang是如何解决内存溢出的
jvm·golang
kaikai_sk12 小时前
JVM之内存模型
jvm
Super Minion13 小时前
Java重修笔记 第五十四天 坦克大战(四)多线程基础
java·jvm·笔记
customer0814 小时前
【开源免费】基于SpringBoot+Vue.JS在线视频教育平台(JAVA毕业设计)
java·jvm·vue.js·spring boot·spring cloud·java-ee·intellij-idea
羊十一14 小时前
C++(继承/虚函数)
jvm·c++
程序员清风15 小时前
JVM面试真题总结(七)
jvm·面试·职场和发展
Ty_110615 小时前
深入理解Java虚拟机:Jvm总结-Java内存区域与内存溢出异常
java·开发语言·jvm
Flying_Fish_roe15 小时前
JVM虚引用
jvm
ZachOn1y15 小时前
Java 入门指南:JVM(Java虚拟机)—— Java 类文件结构
java·开发语言·jvm·后端·java-ee·个人开发
m0_6890870716 小时前
9.10 SQLITE3数据库
jvm·数据库·sqlite