打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
jvm垃圾回收

    在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中堆的各个参数进行优化设置,来提高性能。

建议继续学习:

  1. Java 6 JVM参数选项大全(中文版)    (阅读:2757)
  2. JVM垃圾收集器    (阅读:1954)
  3. JVM垃圾收集算法    (阅读:1757)
  4. 浅谈PHP5中垃圾回收算法(Garbage Collection)的演化    (阅读:1504)
  5. JVM的GC简介和实例    (阅读:1470)
  6. JVM内存分配与回收策略    (阅读:1329)
扫一扫订阅我的微信号:IT技术博客大学习
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
JVM垃圾回收原理
JVM系列(九):MinorGC、MajorGC、FullGC垃圾回收介绍
一步步优化JVM<六>:优化吞吐量
JVM内存模型及内存分配过程
Java系列笔记(3)
JVM内存:年轻代、老年代、永久代(推荐 转)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服