jvm自我学习思考、笔记(一)

本文从JVM的基础概念入手,详细解析了JVM的体系结构,包括类装载器、运行时数据区、执行引擎等关键组件的工作原理。同时,强调了垃圾回收在堆和方法区的重要性,适合初学者入门及进阶学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       前期由于面试的原因,自己就浅显的了解了下jvm相关的知识,在上课的时候,也就笼统的听老师说栈,堆,方法区这些概念,具体的该干什么用,自己的脑子里面是一直糊糊涂涂的,对于这一块还是很浅显的,现在公司需求不是很多,就想静下心来学习下相关的知识,索性也在csdn上面记下自己的随笔。

首先学jvm,我们一定要记住这个图吧

jvm是运行在操作系统上面的,和硬件没有直接的交互

    这里我们可以这样想,你买了一台电脑,这个电脑装了win7或者win10,这时候你兴高采烈的去执行下cmd指令,输入了个java -version,

结果出现了这个提示,你肯定就知道了,这个电脑是二手的,想蒙骗我们程序员没有那么简单,相信看到这,很多人都会想起来我们学java的第一件事,装jdk,因为我们的电脑上面是没有自带的,但是操作系统在你电脑出厂的时候是已经配置好的。

我们在来看下jvm的体系结构

 首先这张图标明了几种颜色:灰色的是没有垃圾回收的,褐色的是主要在垃圾回收,我们说的jvm调优主要是在堆(70%-95%)和方法区调优,这个是我们需要记住的

我们跟着着图示的箭头下去寻宝吧:

首先class files 被java命令运行 将类信息通过类装载器(ClassLoader)加载并初始化生成 Class模版放入运行时数据区(Runtime Data Area),类装载器(ClassLoader)负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定

运行时数据区包括 5部分 : 方法区 和 堆(线程公有)   java栈和本地方法栈和程序计数器(线程私有)

执行引擎(Execution Engine)负责从java栈中取得命令解释成操作系统可识别命令,并交给操作系统执行

本地接口(Native Interface)和本地方法库  融合了别的编程语言(C/C++)为java所用,java诞生时c和c++处于统治地位,

不知道大家注意了一个问题没有

 

 这个class的c是小写的,这就好像是一个汽车图纸吧,现在还没有开始电脑制图,量产,当我们类加载器加载初始化的的时候这个class就成了Class 类了,这时候就相当于我们在电脑制图了,然后我们就要量产了,开始new对象了,这时候就出来了车子,但是我们也要明白这些车是量产的,图纸是一样的,所以这些车子的轮胎啊,引擎啊是一样的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值