学习目标
GC不仅负责内存的回收,也负责内存的分配,甚至故障异常处理一条龙,GC可以拥有不同算法实现,不同算法解决不同的问题,那么
- 为什么要GC?
- 什么是STW?
- 如何提高ThroughPut?
什么是GC
百度百科是这样解释:
GC(Garbage Collection):JAVA/.NET中的垃圾回收器。Java是由C++发展来的。它摈弃了C++中一些繁琐容易出错的东西。其中有一条就是这个GC。有了GC,程序员就不需要再手动的去控制内存的释放。当Java虚拟机(VM)或.NETCLR发觉内存资源紧张的时候,就会自动地去清理无用对象(没有被引用到的对象)所占用的内存空间
其实生活中也许有过这样的场景:当张三妈妈在房间很辛苦的打扫时,发现张三在捣蛋,不停在弄乱房间,是的,假如妈妈打扫的速度<张三弄乱房间的速度呢,此时妈妈愤怒极了,对着张三大声喊了一句:Stop the world!给我停下来。
是的,JVM中内存也是同样如此,当分配内存速度大于回收速度,这时必然就会出现内存溢出,此时GC需要做的就是STW(Stop the world):别给我在分配了,我需要回收内存,给我等待吧