JVM 学习前置知识

news/2025/4/1 7:37:19/

JVM 学习前置知识

Java 开发环境层次结构解析

下图展示了 Java 开发环境的层级关系及其核心组件,从底层操作系统到上层开发工具,逐步构建完整的开发与运行环境:


在这里插入图片描述

1. 操作系统(Windows, MacOS, Linux, Solaris)

  • 作用:为所有上层组件提供基础运行平台。
  • 特点:Java 通过 JVM 实现跨平台能力,开发者无需针对不同操作系统单独编写代码。

2. JVM(Java Virtual Machine)

  • 定位:位于操作系统之上,是 Java 跨平台能力的核心。
  • 功能
    • 解释执行字节码(.class 文件)。
    • 管理内存分配与垃圾回收。
    • 提供运行时环境(如线程管理、异常处理)。

3. JRE(Java Runtime Environment)

  • 组成:JVM + 基础类库(如 java.lang, java.util)。
  • 作用:为 Java 程序提供运行时环境,支持程序的执行。
  • 适用场景:普通用户只需安装 JRE 即可运行已编译的 Java 程序。

4. JDK(Java Development Kit)

  • 组成:JRE + 开发工具(如 javac 编译器、jar 打包工具、调试器)。
  • 作用:开发者使用 JDK 编写、编译和调试 Java 代码。
  • 核心工具
    • javac:将 .java 文件编译为 .class 字节码。
    • java:启动 JVM 并运行程序。
    • jdb:调试工具。

5. 开发 JavaSE 程序

  • 所需组件:JDK + IDE 工具(如 IntelliJ IDEA、Eclipse)。
  • 用途:开发标准 Java 应用程序,如桌面应用、命令行工具等。
  • 示例:使用 Swing 开发 GUI 应用,或编写简单的算法程序。

6. 开发 JavaEE 程序

  • 所需组件:JDK + 应用服务器(如 Tomcat、WildFly) + IDE 工具。
  • 用途:开发企业级分布式应用,支持 Web 服务、数据库交互等复杂场景。
  • 核心技术
    • Servlet/JSP:处理 HTTP 请求与响应。
    • EJB:实现业务逻辑组件。
    • JPA:数据库持久化操作。
  • 应用服务器角色:提供容器管理、事务控制、安全性等企业级功能。

依赖关系总结

操作系统 
└── JVM └── JRE(JVM + 基础类库) └── JDK(JRE + 编译工具) ├── JavaSE 开发(JDK + IDE) └── JavaEE 开发(JDK + 应用服务器 + IDE)

引言

Java 虚拟机(JVM)是 Java 生态系统的核心组件,它使得 Java 能够实现“一次编写,到处运行”的特性。理解 JVM 的底层原理,不仅能帮助我们编写高性能的代码,还能有效解决实际开发中的疑难问题(如内存泄漏、性能瓶颈等)。


什么是 JVM?

定义:

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

JVM 核心组件

  1. 类加载器(ClassLoader):加载 .class 文件到内存。
  2. 运行时数据区:包括方法区、堆、虚拟机栈、本地方法栈、程序计数器。
  3. 执行引擎:解释或编译执行字节码。
  4. 垃圾回收器(GC):自动回收不再使用的对象。

JVM的好处

  1. ​ 一次编写,到处运行
  2. ​ 自动内存管理,垃圾回收功能
  3. ​ 数组下标越界检查
  4. ​ 多态

学习 JVM 有什么用?

  1. 性能调优
    • 通过调整堆内存大小(-Xms, -Xmx)或选择垃圾回收器(如 G1、ZGC)优化应用性能。
  2. 排查问题
    • 分析内存溢出(OOM)、死锁等问题(工具:jstack, jmap, VisualVM)。
  3. 深入理解 Java 特性
    • 理解多线程(线程栈模型)、异常处理(异常表)等底层机制。
  4. 面试高频考点
    • JVM 内存模型、垃圾回收算法、类加载机制等是 Java 后端面试的常见问题。

常见的 JVM 实现

名称特点
HotSpotOracle 官方默认 JVM,应用最广泛,支持多种垃圾回收器和优化策略。
OpenJ9IBM 开发,低内存占用和高启动速度,适合云原生和微服务场景。
GraalVM支持多语言(Java、Python、JS),提供原生镜像编译(Native Image)。
Zing专为低延迟场景设计,无停顿垃圾回收(C4 算法)。

学习路线

在这里插入图片描述

1. 基础概念

  • 书籍:《深入理解 Java 虚拟机》(周志明)
  • 重点:JVM 内存结构、垃圾回收算法、类加载过程。

2. 工具实践

  • 监控工具jconsole, VisualVM, Arthas
  • 内存分析:使用 MAT(Memory Analyzer Tool) 分析堆转储文件。

3. 调优实战

  • 参数调优:堆大小、新生代/老年代比例(-XX:NewRatio)、选择 GC 算法。
  • 案例:解决 Full GC 频繁、Young GC 时间过长等问题。

4. 进阶学习

  • 源码研究:HotSpot 源码(如垃圾回收器实现)。
  • 新技术学习 ZGC、Shenandoah 等低延迟 GC 的原理。


http://www.ppmy.cn/news/1583325.html

相关文章

在本地Windows机器加载大模型并生成内容

本篇演示在本地机器下载和加载大模型并获取AI产生的内容。简单起见,使用的大模型是Qwen2.5-0.5B-Instruct,整个模型的所有文件不到1G。 Qwen2.5-0.5B-Instruct 是阿里巴巴云 QWen 团队基于 Transformer 架构开发的轻量级指令调优语言模型,专…

无人设备遥控器之调度自动化技术篇

一、技术原理 信息采集与处理: 通过传感器、仪表等设备采集无人设备的各种数据,如位置、速度、状态等。 将采集到的数据传输到调度自动化系统中进行处理和分析,以获取设备的实时状态。 系统建模与优化: 调度自动化系统会根据…

Java后端API限流秘籍:高并发的防护伞与实战指南

目录导航 📜 🛡️ 为什么需要API限流?🧠 主流限流算法大解析👩‍💻 阿里巴巴的限流实践📏 四大黄金定律🤼 限流策略组合拳🏆 限流场景实战💻 技术实现方案🌟 最佳实践分享📈 结语与展望📚 推荐阅读 1. 🛡️ 为什么需要API限流? 在高并发环境中,未…

Mac上安装和配置adb学习总结

1、安装: 命令行安装 brew install android-platform-tools 2、adb 的工作原理 adb 提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件: 客户端:用…

C# SerialPort 使用详解

总目录 前言 在工业控制、物联网、嵌入式开发等领域,串口通信(Serial Port Communication)是连接串行设备(如条码扫描器、GPS接收器等)与计算机的重要手段。C# 提供了内置的 SerialPort 类,简化了串口开发…

HarmonyOS NEXT (三):分布式数据管理

HarmonyOS NEXT (三):分布式数据管理 一、分布式数据同步原理 1.1 数据对象生命周期管理 // 分布式数据对象声明(ArkTS) Observed class DistributedNote {id: string generateUUID();Tracked content: string ;Tr…

通俗一点介绍什么是场外期权交易 ?

场外期权是交易所以外的市场进行交易的期权,主要由期货公司、证券公司等金融机构根据客户具体要求进行设计,最终由期货公司等机构与客户签订协议的形式进行,通俗一点理解场外期权就是股票做多的玩法交易,下文为大家科普通俗一点介…

Spring Cloud本地调试禁用Nacos自动注册方案解析

一、需求背景与方案对比 在微服务开发中,本地调试时服务自动注册到Nacos会导致 测试环境污染 和 服务冲突。本文提供两种精准控制注册行为的方案,并详解IDEA参数配置技巧。 二、方案一:注解级精准控制 🛠️ 通过EnableDiscovery…