标签:JVM 掌握 标记 回收 线程 必须 GC class 加载
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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。