公交车里看GC机制

时间:2019-02-21
本文章向大家介绍公交车里看GC机制,主要包括公交车里看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掉的啦
坐长线的一般都会往后走
短线的就停留在车厢中部
当车挤的时候,司机会大吼一句“前面的往后走!”
于是刚上车的就乖乖的往后走咯,要下车的顺便就下车了,没下车的继续停留在车厢中部。
看到这个现象后,再回过头去看上面的两张图,是不是很形象了。