JVM 学习前置知识

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.rhkb.cn/news/39133.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java/数据结构】队列(Quque)

本博客将介绍队列的相关知识,包括基于数组的普通队列,基于链表的普通队列,基于数组的双端队列,基于链表的双端队列,但不包括优先级队列(PriorityQueue),此数据结构将单独发一篇博客&…

深度学习Python编程:从入门到工程实践

第一章 Python语言概述与生态体系 1.3 Python在工业界的应用场景 # 示例:使用FastAPI构建RESTful接口 from fastapi import FastAPI from pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strprice: float@app.post("/items/") async def cr…

Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听)

Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听) 目录 Flutter 学习之旅 之 flutter 使用 connectivity_plus 进行网路状态监听(断网/网络恢复事件监听) 一、简单介绍 二、conne…

matlab的meshgrid

文章目录 一、什么是 meshgrid?二、基本语法三、为什么需要 meshgrid?四、meshgrid 与 ndgrid 的区别 一、什么是 meshgrid? meshgrid 是 MATLAB 中用于生成网格点坐标矩阵的函数,常用于三维绘图(如 surf, mesh, cont…

word插入Mathtype公式居中和自动更新

word插入公式自动更新 前提:安装Mathtype 1.word中查看页的宽度 出现如下 2.设置样式 出现这个窗口 给样式随便起个名字 3.修改样式 3.1 设置两个制表位 第二个 3.2 修改公式字体 如下所示 4. 修改公式格式 4.1在word中打开 Mathtype 4.2 修改公式的格式 变成…

用 pytorch 从零开始创建大语言模型(六):对分类进行微调

用 pytorch 从零开始创建大语言模型(六):对分类进行微调 6 微调用于分类6.1 微调的不同类别6.2 准备数据集6.3 创建数据加载器6.4 使用预训练权重初始化模型6.5 添加分类头部6.6 计算分类损失和准确率6.7 在监督数据上微调模型6.8 使用LLM进…

阿里云对象存储教程

搜“对象存储->免费试用” 选择你的心仪产品,我使用的是第一个 创建后获得三个实例: 点击右上角自己的账号可以进入到AccessKey管理界面 回到对象存储控制台创建Bucket实例 在以下文件中替换自己Bucket的信息即可美美使用~ package com.kitty.blog…

基于Python的智慧金融风控系统的设计与实现

指导途径(🛰):NzqDssm16 1立题依据 1.1毕业论文(设计)的研究背景 随着金融行业数字化转型加速,智能风控系统成为防范金融风险的核心支撑。传统风控手段存在数据处理效率低下、模型更新滞后、人…

分布式算法:Paxos Raft 两种共识算法

1. Paxos算法 Paxos算法是 Leslie Lamport(莱斯利兰伯特)在 1990 年提出的一种分布式系统共识算法。也是第一个被证明完备的共识算法(前提是不存在恶意节点)。 1.1 简介 Paxos算法是第一个被证明完备的分布式系统共识算法。共识…

Day20-前端Web案例——部门管理

目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…

信创-人大金仓数据库创建

一. 官文 资源下载地址 https://download.kingbase.com.cn/xzzx/index.htm 下载安装文件 下载授权文件 产品文档地址:https://help.kingbase.com.cn/v8/index.html 二. 概念 2.1 体系结构 ‌ 实例结构 ‌:由数据库文件和 KingbaseES 实例组成。数据…

[ACTF2020 新生赛]BackupFile-3.23BUUCTF练习day5(1)

[ACTF2020 新生赛]BackupFile-3.23BUUCTF练习day5(1) 解题过程 打开题目环境 看题目意思应该是让我找备份文件 备份文件一般的后缀名为 .rar .zip .7z .tar.gz .bak .swp .txt .html .bak 直接扫描一下 在url中输入/index.php.bak 弱类型比较 为弱相等,即当…

【嵌入式Linux】基于ArmLinux的智能垃圾分类系统项目

目录 1. 功能需求2. Python基础2.1 特点2.2 Python基础知识2.3 dict嵌套简单说明 3. C语言调用Python3.1 搭建编译环境3.2 直接调用python语句3.3 调用无参python函数3.4 调用有参python函数 4. 阿里云垃圾识别方案4.1 接入阿里云4.2 C语言调用阿里云Python接口 5. 香橙派使用摄…

css的背景

css背景属性,可以给页面元素添加背景样式。 一.背景颜色 二.背景图片 语法 backgroud-image :none || url(图像地址) 三.背景平铺 既可以添加背景颜色也可以添加背景图片,只不过背景图片会压住背景颜色 四.背景位置 1.方位名词 如果只指定…

macOS Sequoia 15.3 一直弹出“xx正在访问你的屏幕”

🙅 问题描述 macOS 系统升级后(15.2或者15.3均出现过此问题),不管是截图还是开腾讯会议,只要跟捕捉屏幕有关,都一直弹出这个选项,而且所有软件我都允许访问屏幕了,这个不是询问是否…

高德终端技术总结:高可用架构如何练成?

前言 高德地图作为国民级应用,特别是出行场景的独特性,要确保在线导航高并发和交通安全级的超稳定性,这对技术团队提出异乎寻常的高要求,无论是终端、云端,还是“终端-云端”之间的连接,都必须实现“高可用…

UDP套接字编程(代码)

什么是socket套接字编程? 通过Ip地址 端口号这种方式定位一台主机,这样的方式我们就叫做socket套接字。 Udp Socket 接口介绍 这些案列我们使用的接口基本都是一样的,所以在这里我先把接口介绍完,具体的细节后面在说明。 创…

C# 调用 VITS,推理模型 将文字转wav音频net8.0 跨平台

一、系统环境 操作系统:win10,win11 运行环境:dotnet8 工具:命令行,powershell 开源库:sherpa-onnx 二、工具和源码下载 开源库:https://k2-fsa.github.io/sherpa/onnx/index.html 运行环境下载 https://dotnet.microsoft.c…

【AI学习笔记】Coze平台实现将Excel文档批量导入数据库全过程

背景前摇&原视频教程: 最近看到很多同学都在用Coze平台操作数据,我也想了解一下工作流的搭建和数据处理过程,但是一下子又看不懂太复杂的逻辑,于是上B站搜索相关的基础教程。 Coze官方教程: 之前有看过Coze平台…

Certd自动化申请和部署SSL证书并配置https

服务器使用的华为云,之前SSL证书通过配置Cloudflare的DNS实现的,最近华为云备案提示需修改解析至境内华为云IP,若解析境外IP,域名无需备案,需注销或取消接入备案信息,改为使用Certd自搭建证书管理工具&…