zoukankan      html  css  js  c++  java
  • Java垃圾回收之新生代垃圾收集器

    问题:什么是Stop-the-World?

      1、JVM由于要执行GC而停止了应用程序的执行

      2、任何一种GC算法中都会发生

      3、多数GC优化通过减少Stop-the-world发生的时间来提高程序的性能(高吞吐,低停顿的效果)

    问题:什么是垃圾收集器中的Safepoint ?

    ----》1、分析过程中对象引用关系不会发生变化的点

    2、产生Safepoint的地方:地方调用,循环跳转,异常跳转

    3、安全点数量的适中(太少,让收集器等待太久,少多,消耗资源)

    问题:请问JVM的运行模式?

    ----》

    1、Server模式,启动慢,重量级虚拟机

    2、Client模式,启动快,轻量级虚拟机

    问题;怎样查询当前虚拟机的运行模式是什么呢?

    ----》 java -version

    C:UsersAdministrator>java -version
    java version "1.8.0_201"
    Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
    Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)
    

      

    问题:垃圾收集器之间的联系?

    ----》不同公司会做不同版本的虚拟机,去针对不同的场景。下图是垃圾收集器之间的联系图。

    如果有连线的,就说明可以配合使用。

    Serial收集器(-XX: + UseSerialGC , 复制算法,历史最久的算法)

    ---》

    1、单线程收集,进行垃圾收集时,必须暂停所有工作线程(不用担心,停顿时间最多是一百多毫秒,如果不是频繁发生,完全可以接受)

    2、简单高效、Client模式下默认的年轻代收集器

    ParNew收集器(-XX: + UseParNewGC , 复制算法,在server模式下,ParNew收集器是非常重要的)

    ---》

    1、多线程收集,其余的行为,特点和Serial 收集器一样

    2、单核执行效率不如Serial ,在多核下执行才有优势

    Parallel Scavenge收集器 拍了佬猪 死敢喔猪(-XX: +UseParallelGC,复制算法,和ParNew差不多,多线程,适合后端运行,不需要太多交互)

      吞吐量 = 运行用户代码时间 / (运行用户代码时间+垃圾收集时间)

      1、比起关注用户线程停顿时间,更关注系统的吞吐量

      2、在多核下执行才有优势,Server模式下默认的年轻代收集器

    使用Parllel Scvenge收集器配合自适应策略,以及在启动策略中加入 -XX:+UseAdaptiveSizePolicy

    会把内存调优任务交给虚拟机完成

  • 相关阅读:
    nodepad++的python环境变量设置
    notepad++怎么显示项目的目录树?
    转:Mysql explain
    转:Java NIO(3)
    转:Java NIO(2)
    转:Java NIO
    java 符号引用与直接引用
    Redis 基础命令
    适配器模式 & 装饰器模式
    classpath: spring 中的查找方式
  • 原文地址:https://www.cnblogs.com/vingLiu/p/10657747.html
Copyright © 2011-2022 走看看