jvm垃圾回收
浏览:2681次 出处信息
在jvm中堆空间划分为三个代:年轻代(Young Generation)、年老代(Old Generation)和永久代(Permanent Generation)。年轻代和年老代是存储动态产生的对象。永久带主要是存储的是java的类信息,包括解析得到的方法、属性、字段等等。永久带基本不参与垃圾回收。我们这里讨论的垃圾回收主要是针对年轻代和年老代。具体如下图。
年轻代又分成3个部分,一个eden区和两个相同的survior区。刚开始创建的对象都是放置在eden区的。分成这样3个部分,主要是为了生命周期短的对象尽量留在年轻带。当eden区申请不到空间的时候,进行minorGC,把存活的对象拷贝到survior。年老代主要存放生命周期比较长的对象,比如缓存对象。具体jvm内存回收过程描述如下(可以结合上图):
1、对象在Eden区完成内存分配
2、当Eden区满了,再创建对象,会因为申请不到空间,触发minorGC,进行young(eden+1survivor)区的垃圾回收
3、minorGC时,Eden不能被回收的对象被放入到空的survivor(Eden肯定会被清空),另一个survivor里不能被GC回收的对象也会被放入这个survivor,始终保证一个survivor是空的
4、当做第3步的时候,如果发现survivor满了,则这些对象被copy到old区,或者survivor并没有满,但是有些对象已经足够Old,也被放入Old区 XX:MaxTenuringThreshold
5、当Old区被放满的之后,进行fullGC
在知道垃圾回收机制以后,大家可以在对jvm中堆的各个参数进行优化设置,来提高性能。
建议继续学习:
- Java 6 JVM参数选项大全(中文版) (阅读:3825)
- JVM垃圾收集器 (阅读:2696)
- JVM的GC简介和实例 (阅读:2682)
- JVM垃圾收集算法 (阅读:2605)
- JVM内存结构 (阅读:2588)
- 浅谈PHP5中垃圾回收算法(Garbage Collection)的演化 (阅读:2252)
- JVM内存分配与回收策略 (阅读:2138)
- Java -- Hotspot虚拟机调优与GC垃圾回收策略 (阅读:1116)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:干嘛不去掉“I”和“Impl”?
后一篇:数学之美:垂心的各种优雅的性质 >>
文章信息
- 作者:boqian 来源: 淘宝数据平台与产品部官方博客 tbdata.org
- 标签: jvm 垃圾回收
- 发布时间:2011-05-17 08:52:20
建议继续学习
近3天十大热文
- [67] Oracle MTS模式下 进程地址与会话信
- [65] 如何拿下简短的域名
- [65] Go Reflect 性能
- [59] 图书馆的世界纪录
- [59] 【社会化设计】自我(self)部分――欢迎区
- [59] android 开发入门
- [58] IOS安全–浅谈关于IOS加固的几种方法
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 界面设计速成