公交车里看GC机制
GC机制非常有意思,联系到生活中的GC现象,对它的理解也就简单了。比如大扫除,还有你可能没注意的公交车乘客分布现象。话不多说,如果你已经阅览过GC简介,可以直接看本文的第二点,公交车现象。
1.GC思想
3 Garbage Collection Concepts
A garbage collector is responsible for
• allocating memory
• ensuring that any referenced objects remain in memory, and recovering memory used by objects that are no longer reachable from references in executing code.
3 垃圾回收思想
垃圾收集器的职责在于
• 分配内存
• 确保正在执行的程序中,被引用的对象存留在内存中、清理不再被引用到的对象以恢复占用的内存
引用摘自HotSpot JVM垃圾回收机制官方地址
GC将对象划分为新生代(Young Generation),老年代(Old Genaration)。因为清理大对象的内存会耗时,移动内存数据也要耗时。那么就分而治之,小对象优先清理,大对象放在一个不常被清理到的地方,碰到长活对象也给放过去,内存实在不行再进行清理。
所以新生代分为Eden,From,Survivor Spaces。
如下图便是一次Minor gc.
gc之后:
2.公交车现象
如果你下次坐公交时,可注意了,每站的乘客上下车,车里的人流动就是GC的快照。来看看:
公交车到站,一个个上车下车的乘客都是对象啊
下车的就是被GC掉的啦
坐长线的一般都会往后走
短线的就停留在车厢中部
当车挤的时候,司机会大吼一句“前面的往后走!”
于是刚上车的就乖乖的往后走咯,要下车的顺便就下车了,没下车的继续停留在车厢中部。
看到这个现象后,再回过头去看上面的两张图,是不是很形象了。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法