jvm内存回收

回收区域:堆【主要区域】、方法区【回收废弃常量、无用类】

无用类定义:
1、jvm中不存在该实例
2、加载该类classLoader已被回收
3、任何地方都不存在引用

回收算法:
1、标记清除
2、标记整理
3、复制
4、分代收集

回收器:
单线程
1、serial
2、serial old
多线程
1、parNew
2、parallel scavenge
3、parallel old
4、cms
5、G1

回收新生代
serial、parNew、parallel scavenge

回收老年代
cms、serial old、parallel old

分代收集 G1

serial

最老、也是默认回收算法、单线程
缺点:暂定所有用户进程来回收垃圾、每一小时有五分钟不能给用户提供服务
优点: 简单高效
适合场景、clent模式

ParNew

serial多线程版本
场景:参考serial 多核处理器

Parallel scavenge

1、复制算法
2、目标、回收达到一个可控的吞吐量【吞吐量=运行代码时间/(运行代码时间+GC时间)】
3、吞吐量优先收集器

serial old

1、单线程、标记整理算法
2、serial 老版本
3、jdk1.5之前配合Parallel scavenge、cms后备预案

parallel old

1、Parallel scavenge老版本
2、标记整理算法
3、注重吞吐量以及CPU资源敏感场景、使用Parallel scavenge ++ parallel old
4、吞吐量优先

CMS

1、标记清除
2、目标:最短回收停顿时间
3、四个步骤:初始标记、并发标记、重新标记、并发清除

G1

1、1.7HotSpot重要进化特征
2、优点:并行并发、分代收集、空间整合【标记整理】、可预测停顿
3、四个步骤:初始标记、并发标记、最终标记、筛选回收

欢迎到我的网站寻找更多的知识

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于JVM的内存主要关注点在几个方面: 一、内存回收机制的基础:分代收集算法 二、堆内存回收------如何判断对...
    移动技术爱好者阅读 4,196评论 0 50
  • 1.静态内存分配和回收 静态内存空间是在Java栈上分配的(编译时就确定的),当这个方法结束的时候,对应的栈帧...
    codingBen阅读 4,210评论 0 1
  • 什么样的对象可以被回收 Java使用可达性分析的方法来判断某个对象是否应该被回收: 如图所示,就是通过一系列的称为...
    撒法第阅读 1,670评论 0 0
  • 在第一代面向对象语言C++中,最让人头疼以及影响敏捷开发的无疑是内存的申请与回收 在程序运行时,使用享元设计使用的...
    Charles_Shang阅读 1,638评论 0 3
  • 本文由作者自行翻译,未经作者授权,不得随意转发。后续作者会陆续发布一系列关于JVM内存管理的文章,敬请期待。 1、...
    猿学堂阅读 5,186评论 0 50