2019独角兽企业重金招聘Python工程师标准>>>

在堆中,新生代主要存放的是哪些很快就会被GC回收掉的或者不是特别大的对象(这个大就要看你是否设置了-XX:PretenureSizeThreshold 参数了)。新生代采用的复制算法,即将新生代分为3个区:较大的Eden和两个较小的Survivor(默认的Eden:Survivor = 8:1)。发生在新生代的GC为Minor GC 。在Minor GC时会将新生代中还存活着的对象复制进一个Survivor中,然后对Eden和另一个Survivor进行清理。所以,平常可用的新生代大小为Eden的大小+一个Survivor的大小。

老年代则是存放那些在程序中经历了好几次回收仍然还活着或者特别大的对象(这个大就要看你是否设置了-XX:PretenureSizeThreshold 参数了)。老年代采用的是标记-清除或者标记-整理算法,这两个算法主要看虚拟机采用的哪个收集器,两种算法的区别是:标记-清除可能会产生大量连续的内存碎片。在老年代中的GC则为Major GC。Major GC和Full GC会造成stop-the-world。

那么什么情况下,新生代的对象会进入老年代呢?

首先就是分配担保机制:当Minor GC时,新生代存活的对象大于Survivor的大小时,这时一个Survivor装不下它们,那么它们就会进入老年代。

还有其他的情况:如果设置了-XX:PretenureSizeThreshold3M 那么大于3M的对象就会直接就进入老年代。

还有,在新生代的每一次Minor GC 都会给在新生代中的对象+1岁,默认到15岁时就会从新生代进入老年代,可以通过-XX:MaxTenuringThreshold来设置这个临界点。

相比较而言,在老年代中的对象比新生代中的对象不易回收许多。

JVM的方法区,也被称为永久代。在这里都是放着一些被虚拟机加载的类信息,静态变量,常量等数据。这个区中的东西比老年代和新生代更不容易回收。

转载于:https://my.oschina.net/u/3345868/blog/1601094

JVM 新生代,老年代,永久代相关推荐

  1. JVM 新生代老年代与GC

    Java堆可以分为新生代和老年代两个区,其中新生代又可以分为一个Eden区和两个Survivor区,两个Survivor区分别被命名为From和To以示区分,新生代和老年代的比例为1:2,它们共同组成 ...

  2. JVM新生代老年代GC分析

    新生代 复制算法 新生代特点 GC频繁.不稳定 每次清理内存,清理的比较多 每次回收耗时非常短 比如,有100个对象 可能90个需要清理,只需要复制其中的10个,到另一个内存空间 老年代 标记压缩法 ...

  3. GC算法 (标记清除、复制、标记整理、 分代收集) 、 新生代 老年代

    一.标记-清除算法(Mark-Sweep)   1标记阶段:首先通过根节点,标记所有从根节点开始的可达对象.未被标记的对象就是未被引用的垃圾对象 2清除阶段:清除所有未被标记的对象. 不足:1效率问题 ...

  4. jvm中的年轻代 老年代 持久代 gc ----------转载

    jvm中的年轻代 老年代 持久代 gc 虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation) ...

  5. 04.Java 堆内存 新生代 老年代?

    Java 中的堆是 JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( You ...

  6. java新生代 老年代比例_JVM老年代和新生代的比例

    在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( Young ) 又被划分为三个区域:Eden.From Survivor.To Surviv ...

  7. Java架构学习(十二)java内存结构新生代老年代JVM参数调优堆内存参数配置解决堆栈溢出

    JVM参数调优与垃圾回收机制 一.java内存结构 Java内存模型:是多线程里面的,jmm与线程可见性有关 Java内存结构:是JVM虚拟机存储空间. Java内存结构图 Java内存机构分为:方法 ...

  8. java 年轻代算法_java内存模型 年轻代/年老代 持久区,jvm中的年轻代 老年代 持久代 gc...

    虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...

  9. jvm中的年轻代 老年代 持久代 gc

    虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...

  10. 012、JVM实战总结:案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?

    更详细内容请扫描上方的二维码 1.前文回顾 如何根据对未来预估的业务量和访问量去推算每秒的并发量.内存空间占用等,进而推算出内存运转模型,然后选择合理的机器配置,配置合理的内存大小 2.基于案例,说说 ...

最新文章

  1. android闪退比ios多,安卓和苹果多年使用后有什么区别?一个易卡顿,一个易闪退...
  2. python学习笔记day08 文件功能详解
  3. OpenGL编程指南4:双缓冲实现运行
  4. 从客户端检测到有潜在危险的Request.Form值的asp.net代码
  5. 在 Linux 上安装 Oracle 数据库 11g
  6. 硬核项目 | 用Arduino做一个神奇的悬浮灯!
  7. 如何使用 MySQL 安装后自带的帮助文档
  8. 自制串口示波器小工具
  9. 为什么那些每三年跳一次槽的人越跳越好? - 震撼
  10. MOSS服务器场迁移1-有关切换登录用户时需要刷新一次才能成功的问题
  11. 跨设备链路聚合_路由与交换技术(华为设备)第五讲---链路聚合
  12. 956. 最高的广告牌
  13. SiFive募集1.75亿美元融资 计划2024年上市
  14. Highlighting高亮插件使用说明
  15. 把Android系统签名弄成jks
  16. 邢山虎:指责加班是特定时期的悖论,历史将予以澄清
  17. Java Wbe 学习心得 day06
  18. Servlet实现上传下载
  19. speedoffice(PPT)插入的表格怎么拆分单元格
  20. 基于node.js的阿里云对象存储服务OSS

热门文章

  1. 【资源】吴恩达新书《Machine Learning Yearning》,附中文版PDF下载
  2. python实现按照给定范围随机生成小数,偶数,奇数,整数,正态分布,均匀分布数据以及图片
  3. php 小程序页面传参,关于微信小程序中页面之间传参的解析
  4. python流星雨代码_用python一起来看流星雨
  5. 乐安全 支持x86_android-x86-4.4-r2运行程序总是停止运行怎么处理
  6. python实现多智能体一致性_多智能体深度学习算法MADDPG的PARL实践
  7. Python让繁琐工作自动化——chapter10 日志模块
  8. python通过什么对象连接数据库_介绍Python 数据库的Connection、Cursor两大对象
  9. go实现json格式文件的输出---小示例
  10. mysql etc my.cnf_mysql配置文件/etc/my.cnf