JVM知识点汇总

1. 如何判断对象存活或死去

    (引用计数算法,可达性分析算法)

2. 引用计数(优缺点)

      缺点:相互循环引用

    

3. 可达性分析(GC Roots包含哪些,能过哪种数据结构遍历对象)

      可作为GC Roots的对象:

       虚拟机栈(栈帧中的本地变量表)中引用的对象。

       方法区中类静态属性引用的对象。

       方法区中常量引用的对象。

       本地方法栈中JNI(即一般说的Native方法)引用的对象  

4. 引用的分类(强引用,软引用,弱引用,虚引用)

5. System.gc()finalize()方法的作用,何时执行

      finalize()GC在回收对象之前调用该方法, 不建议用finalize方法完成“非内存资源”的清理工作,但建议用于:① 清理本地对象(通过JNI创建的对象);② 作为确保某些非内存资源(Socket、文件等)释放的一个补充:在finalize方法中显式调用其他资源释放方法

6. 方法区何时回收,如何回收

      主要回收两部分内容:废弃常量和无用的类

      无用的类需要满足3个条件:

       1)该类所有的实例都已经被回收,即Java堆中不存在该类的任何实例;

       2)加载该类的ClassLoader已经被回收;

       3)该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。

7. 垃圾回收算法(标记清除,复制,标记整理,分代收集)

    标记清除:

    对可回收对象进行标记,gc时候进行清除

    缺点:效率不高,容易产生内存碎片

    复制:

     把内存一分为二,使用其中一部分,等这一部分使用完,把存活对象复制到另一部分

     分为eden和两个survivor,eden:survivor=8:1

     缺点:内存利用率不高,当gc时存活对象较多时,效率低,空闲的survivor内存不够时,需要老年代分担

    标记整理:

      对可回收的对象进行标记,把存活对象往一端移动,然后直接掉端边界以外的内存。

    分代收集

     把内存分为新生代和老年代

     新生代对象生命周期短可以使用复制算法,老年代对象存活率高可使用标记整理算法。   

8. Eden空间,Survivor空间的作用,默认比例多少。8:1

9. GC Roots如何枚举(OopMap,

10. GC什么时候触发,解发时如何让所有线程暂停 (设置安全点或者安全区域)

11. Serial收集器

  serial收集器

  单线程收集器,暂停所有线程,新生代使用复制算法,老年代使用标记-整理算法。

  适用运行在client环境下jvm.

12. Parnew收集器(如何配置收集的线程数量)

  parNew收集器

  serial收集器多线程版本。  

  server模式下新生代收集器。

  并行:多条垃圾收集线程并行工作,用户线程暂停

  并发:用户线程与垃圾收集线程同时执行

13. 并行和并发的区别

    并行是多个垃圾收集线程同时工作还是要stop the world.

并发是垃圾收集器与用户线程同时工作。

14. Parallel Scavenge(如何设置最大垃圾收集停顿时间,和吞吐量大小,作用)

  parallel scavenge收集器:(平行清除)

  新生代垃圾收集器(复制算法)

  -XX:MaxGCPauseMillis(最大停顿时间) -XX:GCTimeRatio (吞吐量大小)

   parNew收集器的最大区别:自适应调节策略

15. Serial Old收集器

   Serial Old(PS MarkSweep)收集器:

  serial收集器老年代版本, 单线程收集器,暂停所有线程,新生代使用复制算法,老年代使用标记-整理算法。

  适用运行在client环境下jvm.sever模式下使用cms收集器的backup.

16. Parallel Old收集器

    Parallel Old垃圾收集器是Parallel Scavenge收集器的老年代版本;

JDK1.6中才开始提供, "-XX:+UseParallelOldGC":指定使用Parallel Old收集器

特点:

针对老年代

采用"标记-整理"算法

        多线程收集

17. Cms收集器(初始标记,并发标记,重新标记,并发清除)优缺点.

   CMS收集器

  以获得最短回收停顿时间为目标的收集器。使用标记-清除算法

  步骤(初始标记,并发标记,重新标记,并发清除)  

  特点:并发收集,低停顿

优点:

1:并发收集,低停顿

缺点:

会占用部分cpu资源,影响系统总的吞吐量,当cpu核数不足4个时,垃圾收集cpu负载比较大

垃圾收集与用户线程并行处理,容易产生浮动垃圾

使用标记-清除算法,容易产生内存碎片

18. G1收集器

优点:

并行与并发

分代收集

空间整合

可预测的停顿

步骤:初始标记,并发标记,最终标记,筛选回收

垃圾收集器重要参数含义(UseSerialGC,UserParNewGC,UseConcMarkSweepGC

UseSerialGC:虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old收集器组合进行内存回收

UserParNewGC:使用Parnew+Serial Old收集器组合进行内存回收

UseConcMarkSweepGC:使用Parnew+CMS+Serial Old收集器组合进行内存回收.Serial Old收集器为CMSbackup.

原文地址:https://www.cnblogs.com/tom-plus/p/14047234.html