JVM中的堆一般分为三大部分:新生代、老年代、永久代,其大致的占比如下:

一、新生代

新生代主要用来存放新生的对象。一般占据堆空间的1/3。在新生代中,保存着大量的刚刚创建的对象,但是大部分的对象都是朝生夕死,所以在新生代中会频繁的进行MinorGC,进行垃圾回收。新生代又细分为三个区:Eden区、SurvivorFrom、ServivorTo区,三个区的默认比例为:8:1:1。

Eden区:Java新创建的对象绝大部分会分配在Eden区(如果对象太大,则直接分配到老年代)。当Eden区内存不够的时候,就会触发MinorGC(新生代采用的是复制算法),对新生代进行一次垃圾回收。

SurvivorFrom区和To区:在GC开始的时候,对象只会存在于Eden区和名为From的Survivor区,To区是空的,一次MinorGc过后,Eden区和SurvivorFrom区存活的对象会移动到SurvivorTo区中,然后会清空Eden区和SurvivorFrom区,并对存活的对象的年龄+1,如果对象的年龄达到15,则直接分配到老年代。MinorGC完成后,SurvivorFrom区和SurvivorTo区的功能进行互换。下一次MinorGC时,会把SurvivorTo区和Eden区存活的对象放入SurvivorFrom区中,并计算对

java 堆中的永久代_JVM中的堆的新生代、老年代、永久代详解相关推荐

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

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

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

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

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

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

  4. 第7.26节 Python中的@property装饰器定义属性访问方法getter、setter、deleter 详解

    第7.26节 Python中的@property装饰器定义属性访问方法getter.setter.deleter 详解 一.    引言 Python中的装饰器在前面接触过,老猿还没有深入展开介绍装饰 ...

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

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

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

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

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

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

  8. Java中的BigDecimal比较大于小于等于,四舍五入保留几位(setScale方法详解),加减乘除取余

    本文主要讲解BigDecimal的比较运算,保留精度和取整和基础运算,BigDecimal与其他数据类型转换. 文章目录 比较运算 保留精度及取整 取整(保留0位小数) 保留精度 基础运算 BigDe ...

  9. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

最新文章

  1. python标准库学习4
  2. CCNet 的 Build 流程
  3. 【源码分享】POSCMS功能如何实现短信验证码
  4. Python难懂?买一次西瓜就懂了!
  5. springboot指定注解扫描范围
  6. 安装Windows7出现:”安装程序无法创建新的系统分区 也无法定位系统分区“ 终极解决方案...
  7. TypeScript + React 学习render props
  8. Alain 菜单权限控制
  9. 从iPhone SE到产品精神——一个科技记者的自述
  10. c语言do while语句用法6,c语言do while的用法
  11. 函数式编程-尾递归、尾调用
  12. 【vivado】PL通过axi_hp接口控制PS的DDR
  13. NYOJ954--N的阶乘的二进制表示最低位的1的位置
  14. Visual Studio Code一键设置中文,针对英语不好的学生
  15. FireMonkey 界面的玩法
  16. Sentinel-2(哨兵2号)数据下载及预处理
  17. android实现箭头流程列表_Android弹出选项框及指示箭头动画选择
  18. web前端期末大作业:云南旅游网页主题网站设计——云南城市旅游5页HTML+CSS+JavaScript
  19. 三角形周长最短问题_什么样的三角形周长最短
  20. 无线网络渗透测试(一)基础知识

热门文章

  1. angular5解决chrome等浏览器不能播放.m3u8视频流
  2. 【转】键盘灯亮无反映解决方法
  3. 基于java电影院订票管理系统(java毕业设计源码)
  4. leetcode(力扣)刷题笔记(c++)【中】
  5. 黑白简约Mac高清动态壁纸
  6. Cuphead开发人员针对Nintendo Switch进行优化的技巧
  7. 关于计算机设备自检自查报告,小学计算机室自检自查报告.docx
  8. SpringBoot-NutzDao
  9. lintcode----解码方法
  10. Servlet Jsp(个人笔记)