知方号

知方号

深入探讨Java虚拟机(JVM):执行流程、内存管理和垃圾回收机制

深入探讨Java虚拟机(JVM):执行流程、内存管理和垃圾回收机制

目录

什么是JVM?

JVM 执行流程

JVM 运行时数据区

堆(线程共享)

Java虚拟机栈(线程私有)

什么是线程私有?

程序计数器(线程私有)

方法区(线程共享)

JDK 1.8 元空间的变化

运行时常量池

内存布局中的异常问题

1.  Java堆溢出

2.  虚拟机栈和本地方法栈溢出

JVM 类加载

1. 类加载过程

加载

验证

准备

解析

初始化

双亲委派模型

垃圾回收机制

死亡对象的判断算法

引用计数算法

可达性分析算法

垃圾回收算法

标记-清除算法(Mark and Sweep):

复制算法(Copying Garbage Collection):

标记-整理算法(Mark and Compact):

 分代算法(Generational Garbage Collection):

 

什么是JVM?

JVM(Java虚拟机)是Java编程语言的关键组成部分,它是一种虚拟计算机环境,用于执行Java程序。JVM的主要作用是将Java源代码编译成与特定计算机硬件无关的字节码,并在运行时将这些字节码转换为机器码,以便在不同平台上运行Java应用程序。

在JVM的运行环境中,Java程序能够实现跨平台的特性,因为它们不需要直接与底层操作系统进行交互,而是依赖JVM来处理与硬件的交互。这使得Java成为一种高度可移植和可扩展的编程语言。

JVM的关键功能包括:

类加载:JVM负责加载Java类的字节码文件,通过类加载器实现这一任务。内存管理:JVM自动管理内存分配和垃圾回收,以确保应用程序不会出现内存泄漏和溢出。字节码执行:JVM解释或编译Java字节码,将其转换为本地机器码以执行应用程序。多线程支持:JVM提供多线程支持,允许并发执行Java应用程序的部分或全部代码。垃圾回收:JVM使用垃圾回收机制来自动释放不再被引用的内存,以提高内存利用率。

JVM 是 Java 运行的基础,也是实现一次编译到处执行的关键,那么 JVM 是如何执行的呢?

JVM 执行流程

程序在执行之前先要把java代码转换成字节码(class文件),JVM 首先需要把字节码通过一定的方式 类加载器(ClassLoader) 把文件加载到内存中 运行时数据区(Runtime Data Area) ,而字节码 文件是 JVM 的一套指令集规范,并不能直接交个底层操作系统去执行,因此需要特定的命令解析器 执行引擎(Execution Engine)将字节码翻译成底层系统指令再交由CPU去执行,而这个过程中需要调 用其他语言的接口 本地库接口(Native Interface) 来实现整个程序的功能,这就是这4个主要组成部分的职责与功能。

总结来看, JVM 主要通过分为以下 4 个部分,来执行 Java 程序的,它们分别是:

1. 类加载器(ClassLoader)

2. 运行时数据区(Runtime Data Area)

3. 执行引擎(Execution Engine)

4. 本地库接口(Native Interface) 

JVM 运行时数据区

JVM 运行时数据区域也叫内存布局,但需要注意的是它和 Java 内存模型((Java Memory Model,简称JMM)完全不同,属于完全不同的两个概念,它由以下5大部分组成:

堆(线程共享)

堆的作用:程序中创建的所有对象都在保存在堆中。

我们常见的 JVM 参数设置 -Xms10m 最小启动内存是针对堆的,-Xmx10m 最大运行内存也是针对堆的。

ms 是 memory start 简称,mx 是 memory max 的简称。

堆里面分为两个区域:新生代和老生代,新生代放新建的对象,当经过一定 GC 次数之后还存活的对象会放入老生代。新生代还有 3 个区域:一个 Endn + 两个 Survivor(S0/S1)。

垃圾回收的时候会将 Eden 中存活的对象放到一个未使用的 Survivor 中,并把当前的 Endn 和正在使用的 Survivor 清楚掉。 

Java虚拟机栈(线程私有)

Java 虚拟机栈的作用:Java 虚拟机栈的生命周期和线程相同,Java 虚拟机栈描述的是 Java 方法执行的 内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。