美文网首页
gc初步了解2

gc初步了解2

作者: sakura_bin | 来源:发表于2019-08-02 16:39 被阅读0次
年轻代,老年代,永久代(Metaspace )存放什么对象?
  • heap包含年轻代和老年代,永久代是另一块内存;
  • 年轻代用来存放新近创建的对象,对象更新速度快,在短时间内产生大量的“死亡对象”
  • 老年代是从年轻代Survivor 区域中熬过来的对象或者大对象,fullgc时清理;
  • 永久代存放class信息、常量、静态变量等数据,fullgc时清理;
CMS和G1收集器的区别?
  • CMS(Concurrent Mark and Sweep)是以牺牲吞吐量为代价来获得最短停顿时间的垃圾回收器,主要适用于对响应时间的侧重性大于吞吐量的场景。仅针对老年代(Tenured Generation)的回收。
    1. 为求达到该目标主要是因为以下两个原因:
      i. 没有采取compact操作,而是简单的mark and sweep,同时维护了一个free list来管理内存空间,所以也产生了大量的内存碎片。
      ii. mark and sweep分为多个阶段,其中大部分的阶段的GC线程是和用户线程并发执行,默认的GC线程数为物理CPU核心数的1/4。
    2. gc参数
    -XX:+UseConcMarkSweepGC - 启用CMS,同时-XX:+UseParNewGC会被自动打开
    -XX:CMSInitiatingOccupancyFraction - 设置第一次启动CMS的阈值,默认是68%
    -XX:+UseCMSInitiatingOccupancyOnly - 只是用设定的回收阈值,如果不指定,JVM仅在第一次使用设定值,后续则自动调整
    -XX:+CMSPermGenSweepingEnabled - 回收perm区
    -XX:+CMSConcurrentMTEnabled 默认为true。
    -XX:+UseCMSCompactAtFullCollection 默认为true。
    -XX:+CMSFullGCsBeforeCompaction 默认是0
    -XX:+CMSParallelRemarkEnabled 默认为ture
    -XX:+CMSScavengeBeforeRemark 强制remark之前开始一次minor GC默认为false
    
  • G1收集器(或者垃圾优先收集器)的设计初衷是为了尽量缩短处理超大堆时产生的停顿。在回收的时候将对象从一个小堆区复制到另一个小堆区,这意味着G1在回收垃圾的时候同时完成了堆的部分内存压缩,相对于CMS的优势而言就是内存碎片的产生率大大降低。
    1. gc参数
    -XX:+UseG1GC 启用G1垃圾收集器
    -XX:MaxGCPauseMillis=n 指定期望的最大停顿时间
    -XX:G1HeapRegionSize=n 设置的 G1 区域的大小,值是 2 的幂
    -XX:ParallelGCThreads=n 设置 STW 工作线程数的值。将 n 的值设置为逻辑处理器的数量
    -XX:ConcGCThreads=n 设置并行标记的线程数。将 n 设置为并行垃圾回收线程数 
    -XX:InitiatingHeapOccupancyPercent=45 设置触发标记周期的 Java 堆占用率阈值。默认占用率是整个 Java 堆的 45%
    -XX:G1ReservePercent=n 设置堆内存保留为假天花板的总量
    

相关文章

  • gc初步了解2

    年轻代,老年代,永久代(Metaspace )存放什么对象? heap包含年轻代和老年代,永久代是另一块内存; 年...

  • gc初步了解

    堆内存介绍1.堆内存分为Eden,Survivor,Tenured/old空间;2.从年轻代空间(包括 Eden ...

  • GO语言之error

    初步了解 2. 错误类型表示

  • 初步了解

    什么是css语法?CSS (Cascading Style Sheets) 层叠样式表,用来编辑 HTML中元素...

  • ZGC 入门

    在了解 Java 垃圾回收(GC)机制[https://www.jianshu.com/p/2e926823779...

  • 安卓中 GC

    [序言] GC是Java对内存回收机制,了解GC,应该从了解GC的概念、内存分配、识别哪些内存需要回收和回收方式几...

  • 细说JVM(初步理解GC)

    一、GC概述 我们经过细说JVM(Java内存区域划分AND初探对象的创建)的学习,已经知道Java在运行时内存分...

  • 初步诊断你的GC

    前言 JVM的GC机制让Java程序员省去了自己垃圾回收的烦恼,大大提高了生产效率。但是正因为JVM垃圾回收机制足...

  • hsweb-framework 初步了解 2

    1. github 地址 hsweb-framework 2. 应用场景 后台管理系统. 完全开源的后台管理系统....

  • Java GC 了解

    GC 是什么和为什么? 我们知道,java代码在执行过程中,会在堆上生成一个个的对象,即使该线程的代码执行结束,只...

网友评论

      本文标题:gc初步了解2

      本文链接:https://www.haomeiwen.com/subject/xpoldctx.html