垃圾收集器(GC)
来源:互联网 发布:李嘉欣真人知乎 编辑:程序博客网 时间:2024/04/30 06:24
垃圾收集器(Garbage Collection, GC)
1、概述
垃圾收集(Garbage Collection, GC)的历史远远比java久远,很久之前人们就开始思考GC需要完成的三件事情:
*那些内存需要回收?*什么时候回收?*如何回收?
- 引用计数算法
- 根搜索算法
- 标记-清除算法
- 复制算法
- 标记-整理算法
- 分代收集算法
垃圾收集器
收集算法是内存回收的思想或者说是方法论,垃圾收集器就是内存回收的具体实现。java虚拟机规范中没有对垃圾收集器的实现做出任何规定。
这是HotSpot JVM 1.6 的垃圾收集器,两个收集器之间存在连线,就说明它们可以搭配使用。
- Serial收集器
相对于其他收集器的单线程,它简单而高效,现在依然是虚拟机运行在Client模式下的默认新生代收集器。
- ParNew收集器
ParNew收集器是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数、收集算法、Stop The World、对象分配规则、回收策略等都与Serial收集器完全一样。ParNew收集器的工作过程如下图:
它是许多运行在Server模式下的虚拟机首选的新生代收集器。
- Parallel Scavenge收集器
- Serial Old收集器
- Parallel Old收集器
Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和标记-整理算法。在注重吞吐量及CPU资源敏感的场合,优先考虑Parallel Scavenge加Parallel Old收集器。Parallel Old收集器的工作过程如下图:
- CMS 收集器
CMS收集器是一种以获取最短回收停顿时间为目标的收集器。是基于标记-清除算法实现的。CMS收集器的工作过程如下图:
它的优点是并发收集、低停顿,缺点是①对CPU资源非常敏感;②无法处理浮动垃圾;③收集结束时会产生大量空间碎片。
- G1收集器
G1将整个java堆划分为多个大小固定的独立区域,并且跟踪这些区域里面的垃圾堆积程度,在后台维护一个优先列表,每次根据允许的收集时间,优先回收垃圾最多的区域。
内存分配与回收策略
①对象优先在Eden分配;
②大对象直接进入老年代;
③长期存活的对象将进入老年代
④动态对象年龄判定。
- 垃圾收集器 GC
- 垃圾收集器(GC)
- GC垃圾收集器
- gc垃圾收集器
- GC垃圾收集器概述
- GC垃圾收集器 C#
- GC垃圾收集器 C#
- Java垃圾收集器(GC)
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC算法 垃圾收集器
- GC垃圾回收,垃圾收集器
- POST和GET请求的汉字乱码问题
- (操作系统原理·第三章)生产者-消费者问题
- 正则表达式引擎——普适规则
- Java学习笔记--走进Java
- Ubuntu中ssh安装和修改ssh配置允许root登录
- 垃圾收集器(GC)
- 01背包问题
- GO结构体类型
- WPF功能区控件
- 欢迎使用CSDN-markdown编辑器
- spring 属性注入
- 21天学通C++之对象作业实战
- java输入字符串并将每个字符输出
- eclipse 使用maven 构建springboot +log4j