设为首页 加入收藏

TOP

Java垃圾回收和堆内存布局
2015-08-31 21:23:41 来源: 作者: 【 】 浏览:27
Tags:Java 垃圾 回收 内存 布局

Java虚拟机是通过垃圾回收的方式进行内存回收的,C/C++可以通过代码控制内存释放,防止内存泄露,设置不同的垃圾回收方式和参数都会影响垃圾回收的效果,而这对系统的稳定性及单机的支撑能力方面。


jvm指令集里面没有提供垃圾回收的释放操作,所以不能直接释放内存,而要专门的垃圾回收器来完成垃圾回收的工作。



从上图可以看出,有三大区域Young/Tenured/Perm,也就是我们经常说的新生代/老年代/持久代。


一般来说,新的对象被分配到新生代(Young)的Eden区,也有可能被直接分配到老年代(Perm),在进行新生代垃圾回收的时候,Eden区存活的对象被复制到空的Survior区,而下次新生代垃圾回收的时候,Eden区存活的对象和这个Survivor区中存活的对象被复制到另外一个Survivor区,并且清空当前的Survivor区。经过多次的新生代的垃圾回收,还存活的对象被移到老年代,而老年代也会根据一定时间进行呢垃圾回收。


在Hotspot中,针对新生代提供的GC方式:


串行GC:Serial Copying


并行GC:ParNew


并行回收GC:Parallel Scavenge


针对老年代有下面的GC方式:


串行GC:Serial MSC


并行MS GC:Parallel MSC


并行 GC:Compacting GC - Parallel Compacting


并发GC - CMS


在Sun的Java6 update14中,引入了Garbage First(G1)回收器,G1的目标是取代CMS。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Shell编程入门 下一篇Java内存分析利器MAT使用详解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: