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

    垃圾回收算法:

    • 标记-清除算法
      • 标记无用对象,再进行清除回收
      • 无法清除垃圾碎片,不需要移动对象

    • 复制算法
      • 按容量划分2个相等的内存区域。当一块用完,将活着的对象复制到另一块上,再对当前使用区域清除
      • 每次只使用一个区域,内存使用率不高。对于存活率高的对象频繁复制

    • 标记-整理算法
      • 标记无用对象,让活着的对象向内存一端移动,再清除端边界外的内存。回收后,已用和未用的内存各自一边
      • 解决标记-清除算法的内存碎片问题
      • 局部移动活着的对象

    • 分代算法
      • 根据对象存活周期的不同将内存划分几块。一般是新生代和老年代,永久代
      • 新生代采用复制算法,老年代采用标记整理算法 

    垃圾回收器:

    新生代:

    1. serial(复制算法):标记和清理都是单线程 
    2. parnew(复制算法):serial多线程版本
    3. parallel scavenge(复制算法):并行,高吞吐量

    年老代:

    1. serial old(标记-整理算法):serial老年代版本
    2. parallel old(标记-整理算法):parallel scavenge老年代版本
    3. CMS(标记-清除算法):并行,高并发、低停顿

    g1(标记-整理算法):java堆并行,jdk1.7提供。

    特点:范围是java堆,包括新生代,老年代;不会产生内存碎片

    详细介绍一下CMS,适用Java web垃圾回收器。它是牺牲吞吐量获取低回收停顿的垃圾回收器,它采用标记-清除算法,在gc产生大量内存碎片,剩余内存不够,系统出现Concurrent Mode Failure,临时CMS会采用serial old垃圾回收器清除垃圾。

    这里需要注意一点:

    一般情况,对象分配在新生代的Eden区,有几种情况,对象放在老年代,大对象和长期存活的对象

  • 相关阅读:
    Dev 之 GridControl 列表 显示底部(包括底部统计)
    DEV 之 有些控件不允许拖动。
    Split 之特殊用法
    WebSerivce与WebAPI的区别
    DevExpress的DateEdit设置显示日期和时间
    indexOf 和 lastIndexOf的区别
    DevExpress GridControl使用教程:之 添加 checkbox 复选框
    APP通用测试用例大全
    Windows下搭建easyMock
    Centos8搭建Easy-Mock详细步骤
  • 原文地址:https://www.cnblogs.com/ivy-xu/p/12552833.html
Copyright © 2011-2022 走看看