其他分享
首页 > 其他分享> > JVM必须掌握的重要问题!!!

JVM必须掌握的重要问题!!!

作者:互联网

typora-copy-images-to: JVM.assets
typora-root-url: JVM.assets
说说JVM内存模型

image-20220513212301978

image-20220513212456364

image-20220513212559965

image-20220513212715323

image-20220513212829954

image-20220513212949476

哪些区域需要GC

堆,方法区

垃圾回收算法及意义

1.标记清除算法

2.复制算法

3.标记整理算法

4.分代收集算法

说说类加载的流程
JVM的堆和栈说一下

 

说说cms垃圾回收器

image-20220515193314038

image-20220515193342260

image-20220515193414516

image-20220515193504359

image-20220515193528817

cms的三色标记法了解吗?

image-20220515193812525

image-20220515194000444

 

如果是你怎么完成cms的重标记,解决漏标错标问题

image-20220515194230842

本来执行了A.B=null之后,B、D、E都可以被回收了,但是由于B已经变为灰色,它仍会被当做存活对象,继续遍历下去。 最终的结果就是本轮GC不会回收B、D、E,留到下次GC时回收,也算是浮动垃圾的一部分。

实际上,这个问题依然可以通过「写屏障」来解决,只要在A写B的时候加入写屏障,记录下B被切断的记录,重新标记时可以再把他们标为白色即可。 image-20220515194747029

image-20220515194810173

image-20220515195108199

image-20220515195157774

CMS为了让GC线程和用户线程一起工作,回收的算法和过程比以前旧的收集器要复杂很多。究其原因,就是因为GC标记对象的同时,用户线程还在修改对象的引用关系。因此CMS引入了三色算法,将对象标记为黑、灰、白三种颜色的对象,并通过「写屏障」技术将用户线程修改的引用关系记录下来,以便在「重新标记」阶段可以修正对象的引用。 虽然CMS从来没有被JDK当做默认的垃圾收集器,存在很多的缺点,但是它开启了「GC并发收集」的先河,为后面的收集器提供了思路,光凭这一点,就依然值得记录下来。

了解哪些垃圾回收器

image-20220515203525128

image-20220515195419960

image-20220515195710111

image-20220515195740432

image-20220515195802990

image-20220515195825287

哪些垃圾回收器不需要STW

用可达性算法,在Garbage First的region模式下,和用户线程一起标记GCroot,接下来和用户线程一起运行,直接清理此region里面没有被引用的对象。这个过程就不会STW,但是还有一些没用的对象存在,这种没用的对象越来越多,咋办呢。一旦这个情况积累了一定的内存后,如果到达了一个规定发峰值,可以执行现有Garbage First的模式,还是要SWT。 总结一下,GC可以分为2大过程,第一个过程是我的想法,GC可以一直和用户线程一起执行,先清理一部分无用内存,不需要STW。第二个过程就是普通GC,需要STW,清理全部无用内存

 

并发标记流程

image-20220515200043597

 

netty的jvm进行了哪些优化⭐

 

 

并发标记的安全区了解吗

image-20220515201535331

为什么G1要用分区,说说G1

image-20220515202056316

image-20220515202122141

image-20220515202201371

image-20220515202338434

image-20220515202429308

image-20220515202456798

image-20220515202557271

image-20220515202638722

 

 

G1怎么判断哪些分区收益高

G1收集器会跟踪每个region里面垃圾堆积的价值(即回收该region所获的空间和所需时间的价值),然后再后台维护一个优先级列表,每次根据该优先级列表进行回收(优先处理优先级高的region),这也是Garbage First的由来。

GCRoot有哪些

image-20220514194512732

image-20220514194543554

即堆外的某变量指向堆中的对象,则该变量就是一个root。

标签:JVM,掌握,标记,回收,线程,必须,GC,class,加载
来源: https://www.cnblogs.com/zhangshuai2496689659/p/16340050.html