一篇博客一篇博客
嗯
常见问题记录
  • Java语言
  • 设计模式及设计原则
  • Java虚拟机
  • JUC 并发工具包
  • MySQL 数据库
  • Redis
  • 学校
  • 游记
  • 其他
联系方式
Github
嗯
常见问题记录
  • Java语言
  • 设计模式及设计原则
  • Java虚拟机
  • JUC 并发工具包
  • MySQL 数据库
  • Redis
  • 学校
  • 游记
  • 其他
联系方式
Github
  • Java 虚拟机概述
  • 01 JVM内存结构 - 程序计数器
  • 02 JVM内存结构 - 虚拟机栈

Java 虚拟机概述

1、什么是 JVM

1)定义

Java Virtual Machine ,Java 程序的运行环境(Java 二进制字节码的运行环境)。

2)好处

  • 一次编译,处处执行(跨平台,屏蔽了底层与操作系统的交互)

  • 自动的内存管理,垃圾回收机制(现在很多语言都支持自动内存管理,但是Java出现的比较早,当时主要是与C/C++对比,很多其他语言程序员加入了简单方便的Java阵营)

  • 数组下标越界检查

  • 多态(底层通过虚方法表实现)

3)比较JVM、JRE、JDK 的关系,如下图所示

image-20240908230728166

2、学习 JVM 有什么用

  • 成为中高级程序员必备(中高级程序员应该能用JVM的知识解决一些实际问题,如排查线上项目内存溢出、响应缓慢等)
  • 想走的长远,就需要懂原理,比如:自动装箱、自动拆箱是怎么实现的,反射是怎么实现的,垃圾回收机制是怎么回事等待,JVM 是必须掌握的。

3、常见的 JVM

JVM是一套规范,各个厂商可以遵从这套规范做不同的JVM实现,目前主流的JVM如下图,有Oracle的hotspot,eclipse的openJ9等我们主要学习的是 HotSpot 版本的虚拟机。Oracle的很多东西是收费的商业版本,OpenJDK是免费开源版本。

image-20240908231111652

4、学习的路线

image-20240908231150781

ClassLoader(类加载器):Java 源代码编译成二进制后,会经过类加载器,这样才能加载到 JVM 内存中运行。

Method Area(方法区):类的字节码是加载到方法区中。

Heap(堆):主要是类的实例对象。

当类调用方法时,会用到 JVM Stack(虚拟机栈)、PC Register(程序计数器)、本地方法栈。

方法执行时的每行代码是有执行引擎中的解释器逐行执行,方法中的热点代码频繁调用的方法,由 JIT 编译器优化后执行,GC(垃圾回收) 会对堆中不用的对象进行回收。需要和操作系统打交道就需要使用到本地方法接口。

学习顺序:

1 内存结构

2 垃圾回收

3 字节码和类加载

4其他

Last Updated:
Contributors: Desheng Zhang
Next
01 JVM内存结构 - 程序计数器