JDK1.7 JVM的垃圾收集算法有

1. 标记-清除算法;
2. 复制算法;在商业虚拟机都是使用这种算法来回收新生代的
3. 标记-整理算法;

JDK1.7 JVM的垃圾收集器有

1. Serial收集器 -- 复制算法
2. parNew收集器 -- 复制算法
3. parallel scavenges收集器 -- 复制算法
4. serial old收集器 -- 标记整理算法
5. parallel old收集器-- 标记整理算法
6. CMS收集器-- 标记-清除算法
7. G1收集器 -- 标记整理算法

垃圾收集的过程:

  HosSpot JVM要判断对象的是"活的" 还是 "死的" 用的是“可达性分析算法”, 如果经过 “可达性分析算法” 发现没有与 GC Roots 相连接的引用链,那就会被第一次标记并且进行筛选,筛选的条件是次对象是否有必要执行 finalize() 方法。当对象没有覆盖finalize()方法,或者finalize()方法已经被虚拟机调用过,就被视作 “没有必要执行”。
  如果这个对象被判定为有必要执行finalize()方法,那么这个对象将被放置在F-Queue队列中,GC将会对F-Queue中的对象进行第二次小规模的标记(如果在调用finalize()方法时重新与引用链上的任何对象建立关联,那么在第二次标记时就会被移除 “即将回收” 的集合),当被两次标记后,就认定这个对象是 “死了”
  下面就来看看"对象死了"后 内存分配与回收策略
  对象的内存分配就是往堆上分配 ,主要分配在Eden区,当Eden区没有足够的空间时,会发起一次MinorGC,如果对象在Eden出生并经过第一次MinorGC后仍然存活,并且能够被Survivor容纳的话,将被移动到Survivor空间中,并且对象年龄设为1,对象在Survivor区中每“熬过”一次MinorGC,年龄就加1岁,当年龄(默认15岁)增加到一定程度就将被晋升到老年代中。

JVM-垃圾收集的过程的更多相关文章

  1. JVM垃圾收集器

    JVM中垃圾的回收由垃圾收集器进行,随着JDK的不断升级,垃圾收集器也开发出了各种版本,垃圾收集器不断优化的动力,就是为了实现更短的停顿. 下面是7种不同的分代收集器,如果两个收集器之间有连线,则表示 ...

  2. JVM垃圾收集算法

    JVM垃圾收集 1. 判断对象是否存活 引用计数算法 对象添加一个引用计数器,每个地方引用它,计数器值加+1:当引用失效,计算器值减1:任何时刻计数器为0的对象不可能被使用.引用计数算法实现简单,高效 ...

  3. JVM垃圾收集(Java Garbage Collection / Java GC)

    JVM垃圾收集(Java Garbage Collection / Java GC) Java7 Java8 JDK1.8之后将最初的永久代取消了,由元空间取代. 堆内存调优简介 public sta ...

  4. 7种JVM垃圾收集器特点,优劣势、及使用场景

    今天继续JVM的垃圾回收器详解,如果说垃圾收集算法是JVM内存回收的方法论,那么垃圾收集器就是内存回收的具体实现. 一.常见的垃圾收集器有3类 1.新生代的收集器包括 Serial PraNew Pa ...

  5. 【006】【JVM——垃圾收集器总结】

     Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...

  6. 第五章 JVM垃圾收集器(1)

    说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法> 1.七种垃圾收集器 Serial(串行GC)-- 复制 ParNew(并行GC)-- ...

  7. 第六章 JVM垃圾收集器(2)

    上一章记录了几种常见的垃圾收集器,见<第五章 JVM垃圾收集器(1)> 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS是并发清除 ...

  8. JVM垃圾收集器(1)

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 说明:垃圾回收算法是理论,垃圾收集器是回收算法的实现,关于回收算法,见<第四章 JVM垃圾回收算法& ...

  9. JVM垃圾收集规则和算法

    1.垃圾收集 Garbage Collection 程序计数器.虚拟机栈.本地方法栈这三部分内存随着线程生而生,随着线程灭而自然的回收,他们的大小在编译期间就大致确定了下来,所以对这部分的回收是具备确 ...

  10. 手撕 JVM 垃圾收集日志

    下图是本篇的写作大纲,将从以下四个方面介绍怎么样处理 JVM 日志. 有准备才能不慌 想要分析日志,首先你得有日志呀,对不对.凡是未雨绸蒙总是没错的.所谓有日志的意思,你要把 JVM 参数配置好,日志 ...

随机推荐

  1. 搭建Vue.js开发环境(window10)

    我在配置Vue.js环境的时候遇到了很多的问题,希望能把这些解决方法也介绍给大家,希望能帮到大家,共同学习. 如果要转发,请注明原作者和原产地,谢谢! 注释:下面任何命令都是在windows的命令行工 ...

  2. 关于 for 循环与 循环嵌套

    FOR循环精讲 > 1.初步结识 for是写出题的重要组成部分之一,每个题如果没有for循环根本是无法做出来的,可见for循环在c++语言中是有多么重要,那么for的格式是怎样的呢?? for( ...

  3. GO开发[一]:golang开发初探

    一.Golang的安装 1.https://dl.gocn.io/ (国内下载地址) 2.https://golang.org/dl/ (国外下载地址) 3.现在studygolang中文网也可以了h ...

  4. Percona Toolkit 2.2.19 is now available

    New Features: 1221372: pt-online-schema-change now aborts with an error if the server is a slave, be ...

  5. 5.For loops

    for 循环语句   在需要重复执行代码的时候,for循环常常被用到.我们可以让一行代码执行10次:   for i in range(1,11): print(i)   最后一个数字11是不包含在内 ...

  6. unison+inotify实现数据双向同步

    unison是一款跨windows/linux/MAC OS平台的文件同步工具,不仅支持本地对本地同步,也支持通过SSH.RSH和Socket等网络协议进行同步.更棒的是,unison支持双向同步操作 ...

  7. php写一个简洁的登录页面

    在学php中,刚刚看完实战演练就写了个登录页面 1.表单解析图 这是我们要写的 先用html写个表单先 <html> <head> <title>login< ...

  8. [51nod1614]刷题计划

    大赛将至,摆在你面前的是n道题目,第 i(1 ≤ i ≤ n) 道题目能提升 ai 点智力值,代码量为 bi KB,无聊值为 ci ,求至少提升m点智力值的情况下,所做题目代码量之和*无聊值之和最小为 ...

  9. HDU5137 删点 最短路

    How Many Maos Does the Guanxi Worth Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/5 ...

  10. Python系列之入门篇——HDFS

    Python系列之入门篇--HDFS 简介 HDFS (Hadoop Distributed File System) Hadoop分布式文件系统,具有高容错性,适合部署在廉价的机器上.Python ...