JVM
文章平均质量分 85
Jayden
自信源于努力!
展开
-
第五篇:垃圾收集器一文扫盲
上篇的垃圾回收算法是JVM回收的方法论,垃圾收集器是JVM的具体执行者。这里会介绍5种垃圾收集器:Serial,Parallel,ParNew,CMS,G1。SerialSerial的意思是单线程,顾名思义这是一个单线程收集器。使用Serial收集器,在垃圾回收时,会有短暂的STW(stop the world),此时应用程序线程是完全停止的。年轻代使用的是复制算法Serial Old是Serial的老年代版本,使用的垃圾回收算法是标记-整理算法。ParallelParallel可以对比Seri原创 2022-05-28 20:48:59 · 108 阅读 · 0 评论 -
第4篇:JVM垃圾分代收集理论与垃圾回收算法
Java中创建的对象大部分是放在堆里面的,由于堆是有内存大小,为了提高程序的性能,一般会清理掉没用的对象,清理对象的过程就是垃圾回收过程。**在堆内存中含有年轻代,与老年代两块内存区域,年轻代里的对象朝生夕死,老年代里的对象存活时间较长,所以清理年轻代与老年代中的对象的方式就会有所不同。**下面就介绍与垃圾回收相关的理论与算法。分代收集理论 所谓分代可以理解为年轻代与老年代,根据这两个内存空间的特点,在进行垃圾回收时采用不同的收集算法。这就是分代收集理论。垃圾回收算法复制算法 使用复制算法时原创 2022-04-03 22:12:17 · 450 阅读 · 0 评论 -
第4篇:JVM内存结构深度解析
JVM为什么可以跨平台详解刚学习Java的都知道Java具有一次编译,到处运行这个优点。编译指的是从java文件变成class文件的过程。我们根据以下代码来看下java文件变成class文件后是怎么样的。编译后我们通过idea直接打开编译后的文件如下:大家会发现跟java文件差不多,这里需要注意的是.class文件是二进制文件,这里是idea做了反编译处理(大家看红框处)。我们使用notepad++打开,实际它应该长这样:就是这样的二进制文件,不同的JVM就会产生不同的汇编语言,汇编语原创 2022-03-06 18:40:04 · 332 阅读 · 0 评论 -
JVM基础概念入门
JVM是什么 JVM又名Java 虚拟机,是Java程序的运行时环境。它是用C编写的一个软件,与其他软件一样它是运行在操作系统(LInux,win,mac等)的。那么操作系统又是运行在哪里的呢? 在计算机软件还未诞生之前,我们的计算机只能执行特定的程序,通过电路的拼接来运行程序。如果需要运行第二种程序就需要重新拼接一套新的电路然后运行,这就是早期的计算机硬件。后来冯诺依曼引出了计算机软件的浪潮,它想将程序**‘保存’**起来,这就是计算机软件的开端。所以操作系统是运行在硬件之上的。JVM,操作系统,原创 2021-07-05 19:28:33 · 117 阅读 · 1 评论 -
第3篇:JVM对象创建与内存分配机制剖析
创建对象 下图是一个对象创建的基本流程,通过流程中的每一个步骤来细化相关的知识点加载类 类加载过程可以参考类加载过程与双亲委派机制这篇文章分配内存 在类加载完成后,这个类所需的空间都是确定的,因此在创建对象时,给对象分配的内存空间也是基本确定的,JVM划分内存的两种方式如下分配内存的方式指针碰撞(默认方式):指针碰撞就是开辟一段连续的空间用于存放对象,两个对象之间使用指针隔开空闲列表:空闲列表是虚拟机维护的一个列表。存对象时会根据对象的大小分配位置,并更新列表分配的时候还会原创 2022-03-04 08:29:33 · 353 阅读 · 0 评论 -
类加载过程与双亲委派机制
简单理解一下双亲委派机制 看文章标题就知道是比较难理解的知识点,所以原理先行,让大家先有个大体认识。双亲委派分成两部分是双亲和委派,委派就是委托的意思,这里的双亲是递进关系,举个简单的例子,这里的双亲不是爹地妈咪,而是爷爷跟你爹。既然与类加载过程扯到一起了,那一定与类加载有关了。没错双亲委派机制简单说就是一个类需要加载,会先委托给它的父亲(它爹地)加载,父亲会委托它父亲(它爷爷)加载。大概是这样:类加载过程我们来看看下面这段代码是如何加载的:public class CreateObject原创 2022-01-05 20:32:09 · 591 阅读 · 1 评论