zoukankan      html  css  js  c++  java
  • JVM-垃圾回收

     
     常见的垃圾回收算法:
    1. 引用计数法 : 无法解决循环引用的问题
    2.标记清除算法:从根节点开始标记引用的对象,未被标记引用标记的对象可以被清除。
            解决了循环引用的问题。但是效率较低,标记和清除都要遍历所有对象。GC时,需要停止应用程序(否则可能导致标记不准确)。碎片化严重。
    3.标记压缩算法:标记同“标记清除算法”,清理是将存货的对象压缩到内存的一端。
            解决了碎片化的问题。但对象需要移动内存位置,对效率有影响
    4.复制算法:将内存空间一分为二,GC时,将存货对象复制到另一个空间,将该内存情况,交换两个内存的角色。适用于垃圾对象比较多,复制的对象比较少的时候。内存使用率低,最大50%。
             JVM年轻代内存空间就是用的这种算法。GC时,Eden区存货对象被复制到To,from中达到一定阙值的对象被复制到老年代中,没有达到阙值的被复制到to区。from和to交换角色。GC会一直这样重复,知道to被填满,会将所有对象移到老年代中。
    5.分代算法:根据回收对象的特点进行选择,年轻代适合复制算法,老年代适合标记清除或标记压缩算法。
    垃圾收集器
    1.串行垃圾收集器 : 使用单线程进行垃圾回收。垃圾回收时,java应用中的线程都要暂停,等待垃圾回收的完成(STW,stop the world)。不适合java web应用。
     -XX:+UseSerialGC : 新生代和老年代都用串行垃圾收集器
     -XX:+PrintGCDetails : 打印垃圾回收的详细信息
     
    2.并行垃圾收集器:单线程变成多线程,速度更快些,应用暂停的时间更短些。
      2.1 ParNew垃圾收集器: 工作在新生代   -XX:+UseParNewGC(新生代使用ParNew,老年代使用串行垃圾收集器)
      2.2 ParallelGC收集器
     
    前三个参数相对比较常用
    3. CMS垃圾收集器
     
    4. g1垃圾收集器
     

    可视化分析工具 : GCeasy

  • 相关阅读:
    利用百度搜集子域名--爬虫技巧
    IoC模式
    SpringMVC @RequestBody接收Json对象字符串
    用eclipse创建动态web项目手动生成web.xml方法
    1.Java Spring MVC入门 安装
    获取所有注解
    带参数的方法获取注解
    利用反射调用注解
    java枚举类型
    java创建多线程
  • 原文地址:https://www.cnblogs.com/yintingting/p/8893880.html
Copyright © 2011-2022 走看看