JVM必须掌握的重要问题!!!
作者:互联网
typora-copy-images-to: JVM.assets typora-root-url: JVM.assets
说说JVM内存模型
哪些区域需要GC
堆,方法区
垃圾回收算法及意义
1.标记清除算法
2.复制算法
3.标记整理算法
4.分代收集算法
说说类加载的流程
-
什么时候需要打破双亲委派机制
双亲委派的作用
①防止加载同一个.class。通过委托去询问上级是否已经加载过该.class,如果加载过了,则不需要重新加载。保证了数据安全。
②保证核心.class不被篡改。通过委托的方式,保证核心.class不被篡改,即使被篡改也不会被加载,即使被加载也不会是同一个class对象,因为不同的加载器加载同一个.class也不是同一个Class对象。这样则保证了Class的执行安全。 如何打破双亲委派(/如何破坏双亲委派):
-
调整最小堆与最大堆参数,使堆内存逐渐增加,问该过程最大线程数的变化
JVM的堆和栈说一下
说说cms垃圾回收器
cms的三色标记法了解吗?
如果是你怎么完成cms的重标记,解决漏标错标问题
本来执行了A.B=null之后,B、D、E都可以被回收了,但是由于B已经变为灰色,它仍会被当做存活对象,继续遍历下去。 最终的结果就是本轮GC不会回收B、D、E,留到下次GC时回收,也算是浮动垃圾的一部分。
实际上,这个问题依然可以通过「写屏障」来解决,只要在A写B的时候加入写屏障,记录下B被切断的记录,重新标记时可以再把他们标为白色即可。
CMS为了让GC线程和用户线程一起工作,回收的算法和过程比以前旧的收集器要复杂很多。究其原因,就是因为GC标记对象的同时,用户线程还在修改对象的引用关系。因此CMS引入了三色算法,将对象标记为黑、灰、白三种颜色的对象,并通过「写屏障」技术将用户线程修改的引用关系记录下来,以便在「重新标记」阶段可以修正对象的引用。 虽然CMS从来没有被JDK当做默认的垃圾收集器,存在很多的缺点,但是它开启了「GC并发收集」的先河,为后面的收集器提供了思路,光凭这一点,就依然值得记录下来。
了解哪些垃圾回收器
-
如果你想要最小化地使用内存和并行开销,请选Serial GC;
-
如果你想要最大化应用程序的吞吐量,请选Parallel GC;
-
如果你想要最小化GC的中断或停顿时间,请选CMs GC。
哪些垃圾回收器不需要STW
用可达性算法,在Garbage First的region模式下,和用户线程一起标记GCroot,接下来和用户线程一起运行,直接清理此region里面没有被引用的对象。这个过程就不会STW,但是还有一些没用的对象存在,这种没用的对象越来越多,咋办呢。一旦这个情况积累了一定的内存后,如果到达了一个规定发峰值,可以执行现有Garbage First的模式,还是要SWT。 总结一下,GC可以分为2大过程,第一个过程是我的想法,GC可以一直和用户线程一起执行,先清理一部分无用内存,不需要STW。第二个过程就是普通GC,需要STW,清理全部无用内存
并发标记流程
netty的jvm进行了哪些优化⭐
并发标记的安全区了解吗
为什么G1要用分区,说说G1
G1怎么判断哪些分区收益高
G1收集器会跟踪每个region里面垃圾堆积的价值(即回收该region所获的空间和所需时间的价值),然后再后台维护一个优先级列表,每次根据该优先级列表进行回收(优先处理优先级高的region),这也是Garbage First的由来。
GCRoot有哪些
即堆外的某变量指向堆中的对象,则该变量就是一个root。
标签:JVM,掌握,标记,回收,线程,必须,GC,class,加载 来源: https://www.cnblogs.com/zhangshuai2496689659/p/16340050.html