摸鱼JVM - 几个常识概念启蒙 (老鸟请跳过)

Java语言规范和JVM规范(7、8、9) 包含Java SE7、8、9的语言规范和虚拟机规范,Oracle官方文档,可以去官网下载:https://docs.oracle.com/en/java/index.html 立即下载

前言

JDK, JRE, JVM这几个概念很容易搞晕, 其实, 哪怕是JAVA老手也不一定能理清这些, 所以, 咸鱼还是简单的过下这几个概念.

JDK, JRE, JVM

JDK(Java Development Kit), 针对Java开发人员的产品, 是整个Java的核心, 包括了Java运行环境JRE、Java工具和Java基础类库

JRE(Java Runtime Environment), 运行Java程序所必须的环境的集合,包含JVM标准实现及Java核心类库.

JVM(Java Virtual Machine), 我们常说的java虚拟机, 它是整个java实现跨平台的最核心的部分, 它是一种抽象的计算机, 通过从实际的计算机中仿真模拟各种计算机功能来实现的.

一句话描述三者的关系:

JDK包含JRE, JRE包含JVM

为什么要JVM?

一次编译, 到处运行

这句话想必大家都听过.

那么问题来了, 不同的计算机平台有不同的硬件、系统、内核等等, 这些差异怎么可能让一个Java程序在不同的平台直接运行呢?!

于是聪明的开发者便想到了办法:

计算机底层我没法统一, 但是我可以屏蔽底层的差异, 加个中间层;
这个中间层就是JVM, 它就是一个字节码翻译器,它将字节码文件翻译成各个系统对应的机器码,确保字节码文件能在各个系统正确运行.

这样, 针对不同的计算平台(mac, windows, linux……)提供相同功能的JVM, 就能够让 “一次编译, 到处运行” 吹上天.

看到此处以会恍然大悟, 原来:

Java的跨平台特性其实是由JVM实现的.

JVM有哪些

说到JVM就不得不提下JVM规范.

JVM规范是什么呢?

简单来说, JVM规范就是oracle制定的一组设计要求, 你只要遵守这些要求实现出来的虚拟机就是JVM.(可以简单的理解为接口和实现的联系)

我们平时常说的JVM一般是指的某种具体的JVM规范的实现, 而不是空洞的规范!

比如我们最经常使用的JAVA虚拟机hotspot, 它就是一种JVM规范的具体实现.

主流的JVM如下

  • HotSpot VM (SUN的)
  • J9 VM (IBM的)
  • Zing VM (Azul Systems的)

不同的JVM实现细节上会有差异,

非主流的这里不介绍了.

接下来所有的知识均是针对HotSpot VM开展的, 要问为啥?

当然是因为它是绝对的主流!

JVM究竟做了哪些活?

JVM在Java程序执行过程中做了很多事.

网上找的图

可以看到JVM主要做了以下几件事

  • 类加载
  • 执行

以及

  • 贯穿始终的内存分配及垃圾回收!

专业来说就是:

JVM被分为三个主要的子系统:

  1. 类加载器子系统
  2. 运行时数据区
  3. 执行引擎

接下来的文章, 我们针对每一块进行详细的了解

请关注我的订阅号

订阅号.png

五、e2studio VS STM32CubeIDE之汉化 介绍stm32cubeide汉化方案和汉化包e2studio自带汉化包,在安装过程中可选择安装e2studio STM32CubeIDE切换中英文。 阅读详情

相关推荐

西门子Industrial Copilot实战:5个工业场景下的AI效率提升案例

本文通过五个工业场景实战案例,深入解析西门子Industrial Copilot如何将工业智能转化为实际生产力。从自动化配置、预测性维护到能源优化与人机交互,这位AI助手显著缩短工程周期、提升设备可用率并降低运营成本,展示了其在工业领域系统化、工程化的落地价值。

3c4x5z6v7b的博客 924

JVM规范 oracle官网

Java SE Specifications (oracle.com) 可以选择jdk版本来看对应的JVM规范 如常用的Java SE 8 Edition,class文件的结构说明:Chapter4.Types, Values, and Variables (oracle.com)

lzhfdxhxm的博客 648

oracle jvm规范官网下载及相关书籍推荐

oracle官网下载 https://www.oracle.com/downloads oracle.com/cn/java/technologies/javase-downloads.html 下载地址:https://docs.oracle.com/javase/specs/index.html jvm相关书籍推荐 优先推荐《深入理解java虚拟机》

学亮编程手记 1203

从理论到实践:利用FilterSolutions高效设计7阶椭圆低通滤波器

本文详细介绍了如何利用FilterSolutions软件高效设计7阶椭圆低通滤波器。文章从理论入手,对比了巴特沃斯、切比雪夫等经典滤波器特性,阐述了在要求高衰减陡度(如62dB抑制)和严格通带波纹(0.2dB)时,椭圆滤波器是最优选择。通过分步实战教程,指导读者完成从软件参数设置、性能验证到实际电路布局与调试的全过程,助力射频与高速数字信号处理工程师将理论转化为可靠设计。

jupi8的博客 558

IROS 2025机器人技术解析:从诡异设计到硬核应用

机器人技术正从传统的结构化环境应用,迈向复杂非结构化场景的深度交互。其核心原理在于通过仿生设计、多模态感知与智能控制算法,赋予机器人类似生物的适应性与交互能力。这一技术演进的价值在于突破传统机器人在极端环境、精密操作和自然交互中的瓶颈。例如,结合深度强化学习的全身动力学控制,使机器人能在废墟、管道等复杂地形中自主导航;而软体机器人技术则通过材料变形实现安全、柔顺的抓取操作。这些技术最终服务于极端环境巡检、精密装配和高端陪护等刚性应用场景,推动机器人从功能实现迈向与环境、人进行深度、智能交互的新阶段。

weixin_34006468的博客 448

Oracle HotSpot (JDK 8) JVM 参数列表

Oracle官方文档 -- JDK8的全部jvm参数列表: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

pengpengzhou的博客 2144

keil软件调试(Debug)仿真教程(软件调试和硬件调试的区别)及常用调试按键详解

单片机的调试分为两种,一种是使用软件模拟调试,第二种是硬件调试,两种调试方式各有不同,软件模拟调试有误差,而硬件调试,借用仿真器调试是嵌入式开发中常用方法。

weixin_51624736的博客 3万+

Oracle官网下载:JAVASE规范 和 JVM规范的PDF文件

1、输入网址 oracle.com/downloads 2、下拉:找到 Java选项 3、选择JAVA(JDK)Developers 4、进入后的页面 5、下拉:找到 JAVA SE8, 点击documentation(参考资料) 6、寻找:JAVASE 和 VM 的Specifications(说明书),这一选项。 7、点击:点击Specification(说明书)后进入到的:页面 ...

无 633

ADS2023实战:2.4GHz超外差接收机从设计到链路预算全流程解析

本文以ADS 2023软件为平台,详细解析了2.4GHz超外差接收机从核心指标定义、架构原理到完整链路搭建与仿真的全流程。通过实战演练,重点阐述了如何利用ADS进行谐波平衡仿真和链路预算分析,以量化评估系统增益、噪声系数等关键性能,为射频工程师提供了一套从理论到仿真的系统级设计方法。

herb5的博客 816

支持向量机算法之鸢尾花特征分类【机器学习】

支持向量机(SVM)是一种二元分类模型。它的基本模型是在特征空间中定义最大区间的线性分类器,这使它不同于感知器;支持向量机还包括核技术,这使得它本质上是一个非线性分类器。支持向量机的学习策略是区间最大化,它可以形式化为求解凸二次规划的问题,等价于正则化铰链损失函数的最小化。支持向量机的学习算法是求解凸二次规划的优化算法。Scikit learn(sklearn)是机器学习中常见的第三方模块。它封装了常见的机器学习方法,包括回归、降维、分类、聚类等。实例的特征向量(以2D为例)映射到空间中的一些点,如下图中的

一键难忘的博客 4970

JVM规范 java virtual machine specification 中文版扫描版

王军的博客 2787

基于matlab的CNN验证码识别系统(UI界面版)

基于matlab的CNN验证码识别系统(UI界面版),CNN验证码识别系统包括数据集处理、模型搭建、模型训练、界面设计与实现

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 480

JVM规范一(简介)

The Java Virtual Machinejvm是java平台的基石。它是负责独立于硬件与操作系统、减小它编译后代码的大小和保护用户免受恶意程序 的技术组件。jvm是一个抽象的计算机。就像一个真正的计算机一样,拥有一个指令集且可在运行时操作不同的内存区域。 使用一个虚拟机实现一门编程语言是相当通用的,最为从人所知的也许要数UCSD Pascal的P-Code虚拟机了。在Sun公司实现的jv

iycynna_123的博客 901

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【JVM】对象内存布局

HotSpot JVM 中,Java 对象内存布局由对象头(12字节,含Mark Word与压缩Klass Pointer)、实例数据及对齐填充构成,总大小为8字节倍数。对象头支持锁状态动态复用,指针压缩使引用仅4字节,但堆超32GB时失效。实例字段按类型优先级重排序以减少间隙,最小对象大小为16字节。通过JOL工具可精准验证布局,理解锁机制、GC、伪共享等底层行为。

2301_79732484的博客 147

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

内存数据库SQLite

本文以“黑板”比喻内存数据库,对比传统硬盘数据库,详解 SQLite 使用 :memory: 实现高速临时存储的原理与优势。通过动态占位符生成、executemany 批量操作等技巧,实现毫秒级数据读写,适用于单元测试、临时计算与隐私保护场景。强调其瞬时性与内存限制,提醒开发者注意数据量控制与安全防护,突出参数化查询防注入的核心价值。

看了都说刑的博客 313

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

11-01-演进-.NET GC发展史

.NET GC发展史映射硬件演进:从单核STW到多核并发,再到区域化细粒度回收。历经分代管理、ServerGC、BackgroundGC、LOH自动压缩、POH隔离、DATC自适应线程数及Region-based管理等关键革新,代码量从5000行增至4万+,复杂度指数上升。每一步优化均在暂停时间、吞吐量与资源开销间权衡,体现“实用主义”哲学。核心启示:GC演进由硬件驱动,方向明确——更短暂停、更高效率,但代价是工程复杂性持续攀升。

设计 AI 玩游戏🎮 339

深入理解 JVM 垃圾回收:GC 是什么、如何判定垃圾、四大回收算法全解析

本文深入解析JVM垃圾回收机制,涵盖GC核心概念、垃圾判定(基于可达性分析)、四大回收算法(标记清除、复制、标记整理、分代回收)及其应用场景。重点说明GC主要作用于堆内存,通过根对象遍历识别不可达对象,避免循环引用问题;并结合新生代与老年代特性,阐述分代回收如何提升效率,实现高效内存管理。

qq_61228769的博客 644

SQLite 是什么?和 MySQL、Redis 有什么区别,项目中应该怎么选?

SQLite 是轻量级嵌入式关系型数据库,无需独立服务,直接通过文件存储数据,适合本地工具、桌面应用、移动端离线数据及单机轻量业务。与 MySQL 相比,它部署简单但并发写入受限;与 Redis 不同,它支持完整 SQL 与事务,适用于结构化数据持久化。三者可协同使用:MySQL 处理核心业务,Redis 实现高速缓存与计数,SQLite 降低部署复杂度。选型应基于场景需求,而非技术偏好。

栈外手记|2018 年起深耕后端开发。跳出代码栈,分享技术、项目踩坑与行业思考,看见技术之外更多可能。 325

JVM 核心机制

JVM 是运行时抽象层,核心机制包括类加载(双亲委派)、运行时数据区(堆、元空间、栈帧)、分代垃圾回收(新生代复制、老年代标记-整理)及JIT编译(解释器与C1/C2分层优化)。通过可达性分析识别GC Roots,避免循环引用问题。常见故障如OOM、StackOverflow源于内存或线程资源耗尽,需结合GC日志与堆转储排查。

2401_89855466的博客 287

智学文枢:题目管理页

题目管理页是「智学文枢」的数据基座入口,用一个 10 列的 QTableWidget 承载学生级习题的筛选、搜索、CRUD 与自动流水线触发,其核心难点不是"画表格",而是把"前端过滤 + Store 信号刷新 + 组合题父子展示 + 懒加载规避"组织成一条不卡 UI 的渲染管线。

caixuwen的专栏 277

AI Agent 工程化开发实战(五):持久化与断点恢复——Checkpointer 与 Store

多轮对话的记忆怎么扛住进程重启?本文讲清 LangGraph 两大持久化机制:Checkpointer 存「这一轮聊到哪」(线程内、自动写),Store 存「跨会话成立的事实」(全局、手动写)。用 `get_state` / `get_state_history` / `update_state` 实现断点恢复与时间旅行——回滚重写坏回复、fork 对照分支,再落盘 SQLite 验证重启后仍记得,为后续长期记忆埋线。

寻道AI,探索AI无限可能! 670

libagentcore - 一个基于c++的AI多agent系统升级到2.0版本

libagentcore是一个基于大语言模型的多Agent协作系统核心库,支持任务规划、代码生成、问题求解等复杂场景。系统通过Planner、Worker等专业化Agent协同工作,实现任务自动分解与执行,具备多Token预测加速、本地/网络模型动态切换、任务自愈回溯、分级控制及线程间通信能力。依托SQLite日志与向量数据库记忆管理,支持状态回溯与语义检索,适用于自动化开发、智能问答与决策支持等应用。

akinggw的专栏 216

在.NET WinForms中创建SQLite数据库

本文介绍在WinForms项目中使用SQLite的完整流程:通过NuGet安装System.Data.SQLite.Core包,将数据库文件置于程序目录下,利用CREATE TABLE IF NOT EXISTS实现自动建库建表;通过封装GetConnection()方法管理连接,初始化时调用Init()创建表结构;后续通过参数化SQL实现增删改查操作,支持数据绑定、登录验证等场景,确保安全高效。

2301_80809484的博客 273

【JUC】Thread 内存泄露

ThreadLocal 内存泄露的根源在于线程生命周期过长与过期 Entry 未被清理的叠加,而非弱引用本身。尽管 key 为弱引用可被 GC 回收,但 value 的强引用仍使过期条目无法自动释放。若线程池中线程长期存活且未调用 remove(),value 将持续占用内存。JDK 的清理机制(如 expungeStaleEntry)为触发式、局部性,无法保证全局清除。根治方案是显式调用 remove(),结合 static final 声明和框架层封装,确保上下文安全清理。

2301_79732484的博客 185

【AI大模型接入SDK】ChatServer接口测试

🎬 艾莉丝的简介:共 7 个后端接口,服务基于 http‑lib 实现路由注册表格 1.1.2 Apifox 环境配置 配置测试环境前置 URL:,示例 环境变量配置各类大模型 API‑KEY 密钥 接口录入规范 严格对齐 HTTP 请求方法、Path 路径参数、Body JSON 参数 测试阶段无需维护 Mock 响应结构体,仅校验请求可达性、返回数据有效性两个核心指标 Path 参数禁止携带变量符号填入实际参数值,该符号为 Apifox 变量标识,直接填入会造成参数解析失败 1.1.3 会话

艾莉丝努力练剑的博客,感谢大家一直以来的对艾莉丝的支持和鼓励,uu们如果对C/C++方向感兴趣的话,可以通过艾莉丝主页的微信名片加艾莉丝的好友,和努力练剑的艾莉丝一起加油! 708
上一篇: 45. 从零开始学springboot撸一个Xss过滤器-注解实现
下一篇: 摸鱼JVM - 类加载机制
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值