HotSpot VM垃圾收集器
最常用的HotSpot VM垃圾收集器是分代垃圾收集。该方案是基于两个观察事实。
- 大多数分配对象的存活时间很短。
- 存活时间久的对象很少引用存活时间短的对象。
上述两个观察事实统称为弱分代假设(Weak Generational Hypothesis)。基于此假设,HotSpot VM将堆分成2个物理去。
1、新生代:大多数创建的对象被分配到新生代中,与整个Java堆相比,通常新生代收集(主要是Minor GC)之后的存活对象时间短,垃圾收集的效率高。
新生代分为两块Eden和Survior。新创建的对象被分配到Eden中,当Eden中的空间使用完以后,就会运行Minor GC将Eden中的存活对象复制到Survivor中的To空间,同时Survivor空间中的From区域内如果有没有被回收的对象,也会被copy到To空间中,老年代中被修改过指针应用的对象也会被copy到Survivor区域,最后From和To交换位置。通常可以采用Serial收集器和Parallel收集器来实现。前者是单线程的,后者是多线程的支持并发。在垃圾回收的过程中,程序的运行是被终止的,等Serial GC或parallel GC执行完以后,程序继续执行。
2、老年代:新生代中长期存活的对象最后被提升到老年代。老年代的空间比新生代的大,而空间占用的增长速度比新生代慢。老年代主要采用Ful GC来完成垃圾收集,Full GC的执行频率低,但是一旦发生,执行时间就会很长。
当Survivor中可能不足以容纳Eden和另一个Survivor中存活对象时。如果Survivor中的存活对象溢出,多余的对象将被移到老年代。当老年代已经如法容纳更多的对象时,就会调用Full GC来进行垃圾回收。在垃圾回收的过程中,程序的运行是被终止的,等Full GC执行完以后,程序继续执行。
3、永久代:这是HotSpot VM内存中的第3块区域。用户程序创建的对象最终并不会从老年代移送到永久代。相反,HotSpot VM只是用它来存储元数据,例如类的数据结构、保留字符串等。
HotSpot VM垃圾收集器的更多相关文章
- JVM调优:HotSpot JVM垃圾收集器
HotSpot JVM垃圾收集器 - Snooper - 博客园https://www.cnblogs.com/snooper/p/8718478.html
- HotSpot JVM垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. Serial(串行GC)收集器 Serial收集 ...
- HotSpot 的垃圾收集器
上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用,收集器所处的区域,则表示它是属于新生代还是老年代收集器. 并行(Parallel):指多条垃圾收集器线程并行工 ...
- java虚拟机(六)--垃圾收集器和内存分配策略
目前没有完美的收集器,不同的厂商.版本的虚拟机提供的垃圾收集器会有很大的差别,用户根据自己应用特点和要求组合出各个年代所使用 的收集器.基于jdk1.7Update14之后的虚拟机. HotSpot的 ...
- JVM学习(一)、垃圾收集器简介
一.垃圾收集算法 (1)标记-清除算法:最基础的收集算法“标记--清除”(Mark-sweep)算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的 ...
- 【006】【JVM——垃圾收集器总结】
Java虚拟机学习总结文件夹 JVM--垃圾收集器总结 垃圾收集器概览 收集算法是内存回收的方法论.垃圾收集据是内存回收的详细实现.Java虚拟机规范中对垃圾收集器应该怎样实现没有规定.不同的厂 ...
- JVM垃圾回收算法 及 垃圾收集器
摘自<深入理解Java虚拟机> 一.什么是: GC算法是 方法论,那么垃圾收集器就是具体的 实现. 二.四种 垃圾回收算法 1.标记-清除算法:最基础的收集算法:不足有两点:1标记和清除两 ...
- HotSpot垃圾收集器GC的种类
堆内存的结构:
- 6.HotSpot垃圾收集器
HotSpot JVM收集器 上面有7中收集器,分为两块,上面为新生代收集器,下面是老年代收集器.如果两个收集器之间存在连线,就说明它们可以搭配使用. 并发和并行 先解释下什么是垃圾收集器的上下文语境 ...
随机推荐
- [51nod 1847]奇怪的数学题
[ 51nod 1847 ]奇怪的数学题 题目 点这里看题目. 分析 是挺奇怪的...... 以下定义质数集合为\(P\),\(p_i\)为第\(i\)个质数. 定义\(mp(x)\) ...
- Ultra-QuickSort (求逆序数+离散化处理)、Cows、Stars【树状数组】
一.Ultra-QuickSort(树状数组求逆序数) 题目链接(点击) Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total ...
- 命令中"|"的意义
管道命令,是指 | 的左边运行结果是|右边的输入条件或者范围.如:history | grep date指从history这条命令运行的结果中显示包含有 “date” 的命令 下面举一个例子: 这是运 ...
- cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort
cb49a_c++_STL_算法_对所有元素排序_sort_stable_sort sort(b,e) sort(b,e,p) stable_sort(b,e) stable_sort(b,e,p) ...
- 如何在VMware虚拟机中安装CentOS6.7系统(下篇)
上一篇文章讲到了CentOS6.7的安装教程,安装步骤到时区选择这块了,这篇文章接上篇文章,继续讲述CentOS6.7的安装教程,直至安装完成. 17.设置root的登录密码,日后登录虚拟机,用户名就 ...
- Linux 进程间通信(IPC)总结
概述 一个大型的应用系统,往往需要众多进程协作,进程(Linux进程概念见附1)间通信的重要性显而易见.本系列文章阐述了 Linux 环境下的几种主要进程间通信手段. 进程隔离 进程隔离是为保护操作系 ...
- Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据
本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...
- skywalking的插件管理agent管理
转载自博客:https://my.oschina.net/eacdy/blog/4304312/print Java Agent是插件化.可插拔的.Skywalking的插件分为三种: 引导插件:在a ...
- 重学 Java 设计模式:实战迭代器模式「模拟公司组织架构树结构关系,深度迭代遍历人员信息输出场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 相信相信的力量! 从懵懂的少年,到拿起键盘,可以写一个Hell ...
- Python分支结构与流程控制
Python分支结构与流程控制 分支结构 if 语句 分支结构在任何编程语言中都是至关重要的一环,它最主要的目的是让计算机拥有像人一样的思想,能在不同的情况下做出不同的应对方案,所以if语句不管是在什 ...