JVM底层实现原理(字节码执行细节与垃圾回收)

【JVM】一文掌握JVM垃圾回收机制 作为Java程序员,除了业务逻辑以外,随着更深入的了解,都无法避免的会接触到JVM以及垃圾回收相关知识。JVM调优是一个听起来很可怕,实际上很简单的事。 感到可怕,是因为垃圾回收相关机制都在JVM的C++层实现,我们在Java开发中看不见摸不着;而实际很简单,是因为它说到底,也只是JVM替我们实现的垃圾对象回收机制,也是普通的程序代码,只要理解了垃圾回收器的底层设计思想,掌握JVM调优并非难事! 阅读详情

1、何为JVM:
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。
2、JVM的重要性
在学习java时我们能会知道java语言为什么会如此受人们爱戴,一部分原因是来自它的跨平台性,之所以跨平台是因为java笼统来说属于编译型语言(当然细致来说是:编译——解释型),编译一次后以字节码文件(.class)文件保留在机器中,JVM在解析字节码文件时,可以根据操作系统的不同而解析成相应的机器码(隐藏底层细节的特性)。Java源文件执行过程如下:
在这里插入图片描述

3、JVM、JRE、JDK
说到JVM必不可少的会联系起JRE、JDK。搞清三者之间的关系是每位java学者都必须掌握的。
JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台。所有的Java 程序都要在JRE下才能运行。普通用户只需要运行已开发好的java程序,安装JRE即可。

JDK(Java Development Kit)是程序开发者用来来编译、调试java程序用的开发工具包。JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。

JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

以上定义太过于官方言语,简记:某某某,是。。。,提供。。。,具体如下
JDK:Java开发工具包,是Java开发环境的核心组件,提供编译、调试和运行一个Java程序所需要的所有工具,可执行文件和二进制文件。
JRE:Java运行时环境,是JVM的实现,提供了运行Java程序的平台。
JVM:Java虚拟机,是负责将字节码转换为机器码的地方,提供了内存管理/垃圾回收和安全机制等。

图解:
在这里插入图片描述
4、JVM的底层原理
在这里插入图片描述
(1)、总体组成分为三部分:
类装载器(ClassLoader):用来装载.class文件

执行引擎:执行字节码,或者执行本地方法

运行时数据区(内存模型):方法区(元空间)、堆内存、虚拟机栈(线程)、PC寄存器(程序计数器)、本地方法栈

常考重点:运行时数据区各个区的作用
内存堆:存放new出来的对象。
虚拟机栈:局部变量(方法中的变量)、引用变量。
方法区:类信息(对象的代码、属性、方法)、常量、静态变量。
本地方法栈:提供本地方法的服务。
程序计数器:字节码的位置指示器。
其中方法区和内存堆是线程共享的。
(2)、工作原理
假设一java程序如下:
在这里插入图片描述
main方法是程序的主入口,率先会在“栈”中创建一个main线程,它具有自己独立的内存空间,相当于一个小的“栈”,同时它会给main方法其它对象分配内存空间,称为:“栈帧”。如图:
在这里插入图片描述
思考:compute()方法中有自己的变量和表达式,JVM该如何去执行它们呢?
compute()栈帧内存中又分为四个部分:局部变量表、操作数栈、动态链接、方法出口。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
顾名思义,局部变量表是给局部变量分配内存空间的地方,操作数栈是给变量赋值时存放数值的地方,此时JVM通过执行上示图中的指令码(出栈入栈)来完成赋值操作。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个新的线程时,不仅会在栈中分配一块内存空间还分在程序计数器区中分配一块内存空间,用来记录JVM执行的位置(红色框):
在这里插入图片描述
在这里插入图片描述
程序计数器的作用:当有优先级更高的线程抢占cpu时,该线程就会被挂起,再次执行时cpu可以根据程序计数器记录的位置来承接执行。
那么谁来修改程序计数器的值及其它动作的驱动呢?就是它——字节码执行引擎(谨记组成图)
动态链接:当某个对象调用某个方法时,要在方法区找到它的位置,而动态链接就是记录所在方法区的入口位置。
方法出口:当mian方法调用并执行完compute方法时,找到方法出口记录的位置并继续执行下一条语句。
在这里插入图片描述
当main方法中的math对象要去调用其它方法或变量时,会先去堆中找到内存地址。说白了“堆”就是存放对象内存地址空间的。
5、JVM垃圾回收原理
垃圾回收原理时进行JVM调优的重要路径也是JVM原理的重要知识点。回收方法(算法)有:标记-整理算法、标记-清除算法、复制算法、分代收集算法。
这里具体讲一下JVM常用的“分代收集算法”和“复制算法”。
JVM的内存可以分为堆内存和非堆内存。堆内存分为年轻代和老年代。年轻代又可以进一步划分为一个Eden(伊甸)区和两个Survivor(幸存)区组成。
在这里插入图片描述
(1)、JVM堆内存的分配:
如图:
在这里插入图片描述

JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64。JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制。空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制。因此我们一般设置-Xms和-Xmx相等以避免在每次GC 后调整堆的大小。

通过参数-Xmn2G 可以设置年轻代大小为2G。通过-XX:SurvivorRatio可以设置年轻代中Eden区与Survivor区的比值,设置为8,则表示年轻代中Eden区与一块Survivor的比例为8:1。注意年轻代中有两块Survivor区域。
(2)、老年代和年轻代:
Minor GC(年轻代GC):
对象优先在Eden中分配,当Eden中没有足够空间时,虚拟机将发生一次Minor GC,因为Java大多数对象都是朝生夕灭,所以Minor GC非常频繁,而且速度也很快。

Full GC(老年代GC):
Full GC是指发生在老年代的GC,当老年代没有足够的空间时即发生Full GC,发生Full GC一般都会有一次Minor GC。
(3)、垃圾回收方式:
大对象和长期存活的对象将进入老年代,每一次MinorGC(年轻代GC),对象年龄就大一岁,默认15岁晋升到老年代,通过-XX:MaxTenuringThreshold设置晋升年龄。
第一次MinorGC:Eden区被GC-Root标记的对象为“非垃圾对象”,就会被“复制算法”复制到Survivor1区,幸存下来的分代年龄就会加1
第二次MinorGC:Eden、Survivor1区幸存下来的对象会共同挪到Survivor2区,同时分代年龄加1
第三次MinoorGC:Eden、Survivor2区幸存下来的对象会共同挪到Survivor2区,同时分代年龄加1
。。。。。以此反复,当对象年龄等于15时,会被放到老年代区
当老年代内存满时,会进行一次full gc,伴随着STW(Stop The Work):清理垃圾时会停掉其他线程。
优化——减少STW——减少full gc:因为full gc是在整个堆里清理垃圾,STW发生概率大。

(4)JVM如何判定一个对象是否应该被回收?(重点掌握)
判断一个对象是否应该被回收,主要是看其是否还有引用。判断对象是否存在引用关系的方法包括引用计数法以及root根搜索方法。
root根搜索方法:可达性分析算法————GC Roots
将“GC Roots”对象作为起点,从这些结点开始向下搜索引用的对象,找到的对象都标记为非垃圾对象,其余未标记的对象都是垃圾对象。
GC Roots根结点的对象:
a、栈引用的对象
b、方法区中类静态属性引用的对象
c、方法区中常量引用的对象
d、native方法引用的对象
在这里插入图片描述

(5)、垃圾回收算法(重点)
HotSpot虚拟机采用了root根搜索方法来进行内存回收,常见的回收算法有标记-清除算法,复制算法和标记整理算法。

标记-清除算法:
标记-清除算法执行分两个阶段。第一阶段从引用根节点开始标记所有被引用的对象,第二阶段遍历整个堆,把未标记的对象清除。此算法需要暂停整个应用,并且会产生内存碎片。
在这里插入图片描述
复制算法:
复制算法把内存空间划为两个相等的区域,每次只使用其中一个区域。垃圾回收时,遍历当前使用区域,把正在使用中的对象复制到另一个区域中。复制算法每次只处理正在使用中的对象,因此复制成本比较小,同时复制过去以后还能进行相应的内存整理,不会出现“碎片”问题。当然,此算法的缺点也是很明显的,就是需要两倍内存空间。
在这里插入图片描述
标记-整理算法:
标记-整理算法结合了“标记-清除”和“复制”两个算法的优点。也是分两个阶段,第一阶段从根节点开始标记所有被引用对象,第二阶段遍历整个堆,清除未标记对象并且把存活对象“压缩”到堆的其中一块,按顺序排放。此算法避免了“标记-清除”的碎片问题,同时也避免了“复制”算法的空间问题。
在这里插入图片描述
垃圾回收算法是垃圾收集器的算法实现基础,年轻代垃圾回收一般采用复制算法(回想到年轻代的多区结构:Eden,s1,s2),老年代垃圾回收一般采用标记-清除和标记-整理算法。

(6)垃圾收集器(主要掌握CMS)
结合第五知识点,垃圾收集器就是垃圾回收算法的具体实现。
主要包括七种,即Serial、Serial Old、ParNew、Darallel Scavenge、Parallel Old以及CMS、G1收集器。如下图所示:
在这里插入图片描述

CMS的垃圾收集过程分为4步:
初始标记:需要“Stop the World”,初始标记仅仅只是标记一下GC Root能直接关联到的对象,速度很快。
并发标记:是主要标记过程,这个标记过程是和用户线程并发执行的。
重新标记:需要“Stop the World”,为了修正并发标志期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录(停顿时间比初始标记长,但比并发标记短得多)。
并发清除:和用户线程并发执行的,基于标记结果来清理对象。
在这里插入图片描述
那么问题来了,如果在重新标记之前刚好发生了一次MinorGC,会不会导致重新标记阶段Stop the World时间太长?
答:不会的,在并发标记阶段其实还包括了一次并发的预清理阶段,虚拟机会主动等待年轻代发生垃圾回收,这样可以将重新标记对象引用关系的步骤放在并发标记阶段,有效降低重新标记阶段Stop The World的时间。
CMS垃圾回收器的优缺点分析:
CMS以降低垃圾回收的停顿时间为目的,很明显其具有并发收集,停顿时间低的优点。
缺点主要包括如下:
在这里插入图片描述

*参考视频:https://ke.qq.com/webcourse/index.html#cid=230866&term_id=100272363&taid=3625450614261202&vid=5285890807081339152*
参考资料:牛客网《Java开发岗高频面试题全解析》

用C++从零实现JVM:深入解析字节码执行、垃圾回收与JIT编译原理 Java虚拟机(JVM)作为Java生态的基石,其核心在于提供一个跨平台的运行时环境,将Java字节码转换为可执行的机器指令。其工作原理涉及类加载、内存管理、字节码解释与即时编译等多个关键子系统。理解JVM的内部机制,对于进行性能调优、排查线上问题以及深入理解编程语言运行时至关重要。在工程实践中,手动实现一个简化版JVM是掌握这些原理的有效途径。通过使用C++这样的系统级语言,开发者可以深入控制内存布局、线程调度和机器码生成,从而透彻理解垃圾回收(GC)算法如何管理对象生命周期,以及即时编译器(JIT)如何 阅读详情

相关推荐

JVM虚拟机技术原理与实现

Java是Sun公司推出的Java语言和Java平台的总称,在操作系统中安装Java平台后Java应用程序即可直接运行。Java程序被编译成字节码解释执行,使Java程序与平台无关。Java是一种技术,由Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java API组成。JVM是Java 技术的核心,必须在指定的机器或者设备中安装部署JVM后才能够运行Java 程序。

悦分享 663

【Java jvm工作原理 全面详细】简单理解

AVM一、JVM基础知识(一)java跨平台解释(二)JVM介绍(三)JDK、JRE、JDK三者关系(四)JVM的生命周期启动和消亡:JVM运行起点:JVM的两种线程:二、JVM的工作机制(类加载机制)(一)类加载时机(二)类加载器(三)双亲委派模型(四)类加载详细过程 一、JVM基础知识 (一)java跨平台解释 注意:我们提到java跨平台性,就会想到JVM,但能跨平台的是java程序,而不是...

qq_44682003的博客 1635

ArcGIS符号库下载 | 制图规范、三调、1:1万地形图、土地利用总体规划图.....

最近整理了一些符号库 涉及的类型比较多 包含有三调的(二调的也加上去了),一些点线面符号库,1:1万地形图,1:5万土地利用,土地利用总体规划图

qq_43173805的博客 2万+

【转】JVM介绍

1. 什么是JVM? JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字...

weixin_34200628的博客 427

Seurat 单细胞转录组测序数据分析教程(三)——python(scanpy)

文章参考至,做了一个更详细的解读。本教程探讨了 scanpy 的可视化可能性,分为三个部分:嵌入的散点图(例如 UMAP、t-SNE)使用已知标记基因鉴定簇差异表达基因的可视化在本教程中,我们将使用来自 10x 的数据集,其中包含来自PBMC的 68k 个细胞。Scanpy 在其分布中包括该数据集的简化样本,该数据集仅包含 700 个细胞和 765 个高度可变的基因。该数据集已经过预处理和 UMAP 计算。在本教程中,我们还将使用以下文献标记:B细胞:CD79A、MS4A1。

coffeeii的博客 5828

Java开发者必看:Apache PDFBox实现PDF数字签名完整指南(附源码)

本文为Java开发者提供了使用Apache PDFBox实现PDF数字签名的完整指南。详细介绍了从环境配置、核心原理到完整代码实现的全过程,涵盖证书管理、签名位置计算、性能优化及实际应用案例,并附有可直接复用的源码,帮助开发者高效集成PDF数字签名功能。

o1p2q3r的博客 340

JVM之前世今生实现讲解

JVM之前世今生实现讲解前世今生虚拟机始祖JDK1.0Classic虚拟机JDK1.2Exact VMHotSpot VM(第一)特点天下第二:BEA JRockit/ IBM J9 VMBEA JRockit VM研究方向后续IBM J9 VM研究方向优点后续专有虚拟机VEA Liquid VM简介后续Zing优点 前世今生 首先放出一张图,这张图是《深入理解JAVA虚拟机》中的配图,本文也是根据这本书进行的记录。 虚拟机始祖 虚拟机始祖——Classic/Exact VM JDK1.0 虚拟机Vir

北洋的博客 1601

工业产线瑕疵检测:基于 YOLO 的自动化质检系统实战

从工业瑕疵数据集构建到模型训练,从桌面检测界面到产线适用性优化,本文覆盖了一套工业质检系统的完整路线。这个场景的核心评价指标不是最高精度,而是在保证 recall ≥ 0.95 的前提下尽可能压低 false positive——因为漏检的直接成本(客户投诉、质量事故)远高于误报的成本(人工复检)。部署时先设一个偏低的置信度阈值确保覆盖,再通过持续收集人工复检数据来逐步调优。

m0_71589036的博客 67

深入元空间

完成一次垃圾回收,此时O类型的两个对象已被清理,剩下的P类型的对象和类加载器的实例一起被复制到了Survivor区域。但是,此处虽然O类型不再使用,但是对应的元空间的内存占用不能被释放,因为这个类加载器,不仅仅负责O类型,还负责P类型,而P类型还存在实例,因此不可以被回收。此时,存在两个类型为O的对象,一个类型为P的对象,对应的类加载器的实例是深蓝色的那个圆。bootstrap类加载器和application类加载器是不会被回收的,而动态类加载器,在其负责加载的类对象不再使用时会被回收。

『程序员·小李』的博客 1429

5、基于模型的系统工程(MBSE)全面解析

本文全面解析了基于模型的系统工程(MBSE),介绍了模型在系统工程中的核心地位,以及如何通过视图和符号表示法实现信息的可视化。文章还详细阐述了MBSE的方法构成,包括框架(本体和视图点)和流程集,探讨了MBSE的实施流程、关键要素、应用策略以及未来发展趋势。通过合理应用MBSE,组织可以提高系统开发的效率和质量,降低成本与风险,实现成功部署。

nft7creator的博客 127

Spring AI 项目实战(一):Spring AI 核心模块入门

摘要:本文探讨了Spring Boot与Spring AI在Java生态下开发智能应用的技术融合。Spring Boot通过自动配置和嵌入式服务器简化企业级应用开发,其核心架构包括Spring Application和Web MVC框架。Spring AI则提供标准化接口,整合Hugging Face、TensorFlow等AI引擎,模块化支持NLP、CV和ML任务。文章通过代码示例展示了文本分类、图像处理和机器学习预测的实现,为开发者提供了Java生态下高效构建AI应用的解决方案。

博客 1528

JVM专题七:JVM垃圾回收机制

中,我们介绍了JVM内存主要分哪些区域,这些区域分别是干什么的,同时也举了个例子,在运行过程种各个区域数据是怎样流转的。细心的小伙伴可能发现一个问题,在介绍完方法弹栈以后就没有介绍后续流程了。方法执行完以后,堆内存存放的对象实例咋整呢,带着这样的疑问进入今天的内容。

Jeremy程序员 2万+

本地玩转AI还得靠这个,SillyTavern(酒馆)到底有多强?

SillyTavern是一款本地运行的LLM交互前端,支持文本生成、图像生成、语音合成等功能。它最初是TavernAI的分支,现已独立开发,社区活跃,功能更新频繁。SillyTavern通过前端UI和插件系统连接各种大模型后端,如OpenAI、KoboldAI等,用户可以在本地创建“虚拟酒馆”与各种角色对话。其功能亮点包括角色卡、角色记忆、世界设定、多人聊天室、自定义UI和行为脚本、插件扩展支持等。SillyTavern适合AI创作用户、AI工程师、LLM爱好者和AIGC创作者。它有两个维护分支:relea

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 8037

JVM垃圾回收器上篇

有了前面的理论铺垫,接下来我们正式开始学习实际垃圾回收器。

javashitu的博客 1612

7、复杂分布式水文模型的两阶段代理参数校准框架

本文提出了一种针对复杂分布式水文模型的两阶段代理参数校准框架,旨在解决可变入渗能力模型(VIC)在参数校准过程中计算成本高、耗时长的问题。该框架结合AdaBoost与反向传播神经网络(BPNN)构建高精度代理模型,并引入ε-NSGA II多目标优化算法加速搜索最优参数集。通过在兰江流域和湘江流域的实验验证,该方法在校准效率上提升了约20倍,同时保持了高模拟精度(NSE接近1,Bias接近0)。框架采用两阶段设计:第一阶段(SM-I)快速筛选关键参数范围,第二阶段(SM-II)进行高精度预测,显著减少了无效计

apple5的专栏 86

廖雪峰Python教程[完整版]

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

细谈JVM垃圾回收与部分底层实现

JVM系列文章目录 初识JVM 深入理解JVM内存区域 玩转JVM对象和引用 JVM分代回收机制和垃圾回收算法 细谈JVM垃圾回收与部分底层实现 细谈JVM垃圾回收与部分底层实现JVM系列文章目录前言并发标记与三色标记三色标记漏标的原因CMS中解决漏标问题的方案G1中解决漏标问题的方案G1和CMS解决漏标问题的区别G1中的部分技术细节G1的内存区域不固定跨代引用与CradTable、RsetCradTbaleRset安全点和安全区域安全点安全区域低延迟的垃圾回收器垃圾回收器三项指标EplisonZGCSh

羽毛的博客 707

pscad IEEE标准系统搭建说明

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

JVM详解

jvm核心知识点讲解

H_xxxxd的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JVM上篇学习3--内存与垃圾回收

JVM上篇学习3–内存与垃圾回收 执行引擎 StringTable 垃圾回收概述

xu_jin_shan的博客 3826

JVM基础学习:基本原理、JVM结构、垃圾回收机制及回收算法、jdk1.8和jdk1.7区别

1、JDK的基本概念 我们可以把Java程序设计语言、Java虚拟机、 Java API类库这三部分统称为JDK( Java Development Kit),JDK是用于支持Java程序开发的最小环境。另外,可以把Java API类库中的Java SE API子集和Java虚拟机这两部分统称为JRE( Java RuntimeEnvironment),JRE是支持Java程序运行的标准环境。 ...

小喵的博客 6400

JVM与垃圾回收笔记

JVM与垃圾回收1.JVM与Java体系结构1.1 Java虚拟机1.1.1 简介1.1.2 作用1.1.3 特点1.1.4 JVM的位置1.2 JVM的整体结构1.3 java代码执行流程1.4 JVM的架构模型1.5 JVM的生命周期1.5.1 虚拟机的启动1.5.2 虚拟机的执行1.5.3 虚拟机的退出1.6 常见的java虚拟机2.类加载子系统2.1 类加载器与类的加载过程2.1.1总体流程2.1.2 类加载子系统的作用2.1.3 类加载器ClassLoader角色2.1.4 类的加载过程 1.JV

Listen·Rain的博客 2019

说说JVM的底层原理(JAVA是如何运行的)?

Java 虚拟机(JVM)是 Java 程序运行的核心环境,其设计融合了内存管理、类加载、垃圾回收和高效执行等复杂机制。以下从底层视角详细解析其核心模块,并结合实际场景说明其工作原理。,不仅能优化应用性能(如减少 Full GC 停顿),还能有效排查内存泄漏、锁竞争等问题,是高级 Java 开发的必备技能。类加载是 JVM 动态性的基石,其触发条件包括首次使用类(如。、反射调用等)或继承父类时。:静态集合持有对象导致无法回收。

千层冷面的博客 1928

深入剖析 JVM 核心底层:从内存结构到垃圾回收的完整逻辑

本文深入解析JVM底层机制,从内存结构、运行机制、类加载到垃圾回收四个维度进行技术拆解。详细分析了栈帧的生命周期与内部结构,通过javap工具解读字节码执行逻辑;阐述双亲委派模型的原理及打破场景;对比不同垃圾回收算法的优缺点及适用场景。文章强调理解JVM底层对优化Java程序性能、解决内存问题的重要性,为开发者提供从"会写代码"到"写好代码"的关键技术支撑。

X13100387636的博客 824

JVM底层实现原理

1.JVM内存模型 先上图,先上图,先上图!!! 想必大家都似曾相识的见过,见过,见过这张图,这是JDK体系结构图。 都是英文,翻译过来也看不懂,我还是介绍一下吧!!! 这里的核心就是JVM,它也是实现JAVA语言跨平台的核心。 这里注意,在我们搭建JAVA开发环境的时候,下载JDK的时候,会提供系统版本,下图 这是因为不同的JDK搭载的环境系统,会将.class文件由JVM挂载到当前机器能...

程序员劝退师的博客 897

JVM_虚拟机目录

<font color="red">在人生的道路上,即使一切都失去了,只要一息尚存,你就没有丝毫理由绝望。因为失去的一切,又可能在新的层次上复得</font> [JVM00_面试官对类加载器子系统、运行时数据区、内存分布、执行引擎 你能坚持到第几问?](https://blog.youkuaiyun.com/TZ845195485/article/details/117573479) [JVM01_概述、跨平台原理、分类、三大商业虚拟机](https://blog.youkuaiyun.com/TZ845195485/articl

所得皆惊喜 4万+

打开jvm的黑盒子,梳理下jvm的垃圾回收以及选用对应的垃圾回收算法的原因

梳理下jvm的大体脉络,后续再更新

wy_05689的博客 707

Java高级JVM知识点记录,内存结构,垃圾回收,类文件结构,类加载器

Java高级JVM知识点记录,类加载器、运行时数据区、执行引擎、垃圾回收、常见面试题

n_AloneT的博客 1453
上一篇: 基于ssh的后台新闻管理系统
下一篇: MySQL索引本质解析
Senye_ing
博客等级 码龄8年 24粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Senye_ing

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

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

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

打赏作者

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

抵扣说明:

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

余额充值