• edn区、s0、s1都属于新生代,tentired属于老年代。s指survivor。
  • 对象会在eden区分配内存,在经历一次新生代垃圾回收后,如果对象还存活,则进入s0或者s1,并且对象的年龄会加1。当年龄增加到一定程度(默认15岁,可以通过-XX:MaxTenuringThreshold),就会被晋升到老年代。
  • 大对象长期存活的对象直接进入老年代。

  • Java8之后,将最初的永久代取消,由元空间取代。
  • 元空间(Java8)与永久代(Java7)的区别在于:永久代使用的JVM的堆内存,但是元空间并不在虚拟机中而是使用本机物理内存

  • 新生代默认占堆内存的1/3,老年代默认占堆内存的2/3。
  • Java8中,元空间也在堆中。

通过程序获取堆内存大小

public class HelloGC {public static void main(String[] args) throws InterruptedException {//        System.out.println("*********HelloGC********");
//        Thread.sleep(Integer.MAX_VALUE);// 获取cpu核心数System.out.println(Runtime.getRuntime().availableProcessors());// 返回Java虚拟机中的内存总量,约等于真实物理内存的1/16long totalMemory = Runtime.getRuntime().totalMemory();// 返回Java虚拟机试图使用的最大内存量,约等于真实物理内存的1/4long maxMemory = Runtime.getRuntime().maxMemory();System.out.println("TOTAL_MEMORY(-Xms) = "+totalMemory+"(字节)、"+(totalMemory/(double)1024/1024)+"MB");System.out.println("MAX_MEMORY(-Xmx) = "+maxMemory+"(字节)、"+(maxMemory/(double)1024/1024)+"MB");}
}

新生代GC和老年代GC区别

  • 新生代GC(Minor GC):非常频繁,回收速度较
  • 老年代GC(Major GC/ Full GC):出现了老年代GC,至少会发生一次新生代GC(并非绝对)、回收速度比新生代GC10倍以上。

Minor GC的过程

参考资料
1.JavaGuide公众号文章
2.尚硅谷Java大厂面试题全集(java面试,周阳主讲)-Java面试_大厂高频面试题_阳哥

【JVM】Java堆内存的新生代和老年代相关推荐

  1. JVM堆内存(新生代,老年代,Xms,Xmx)学习整理

    JVM堆内存 jvm堆内存主要分为新生代和老年代,当垃圾收集器触发GC的时候会对堆内存长时间没用的对象分代进行回收,新生代和老年代内存占比为1:2. 文章目录 JVM堆内存 新生代 1.Eden区 2 ...

  2. jvm对象从新生代到老年代_JVM内存管理、JVM垃圾回收机制、新生代、老年代以及永久代...

    内存模型 JVM运行时数据区由程序计数器.堆.虚拟机栈.本地方法栈.方法区部分组成,结构图如下所示. JVM内存结构由程序计数器.堆.栈.本地方法栈.方法区等部分组成,结构图如下所示: 1)程序计数器 ...

  3. java堆内存_java堆内存详解

    http://www.importnew.com/14630.html java堆的特点 <深入理解java虚拟机>是什么描述java堆的 Java堆(Java Heap)是java虚拟机 ...

  4. [JVM] java虚拟机内存管理机制及垃圾收集

    Table of Contents 虚拟机内存结构详解 程序计数器 虚拟机栈 JVM stack 本地方法栈 native method stack 常量池 堆 heap 方法区 method are ...

  5. 1、虚拟机内存管理、运行时数据区、线程共享区、Java堆、新生代、老年代、Eden区域分配、方法区、线程独占区、虚拟机栈

    1.Java虚拟机内存管理 1.1.运行时数据区[Runtime Data Area] 1.1.1.线程共享区 1.1.1.1.Java堆[heap] 1.1.1.1.1.新生代.老年代.Eden区域 ...

  6. jvm对象从新生代到老年代_深入理解jvm内存模型以及gc原理

    整体架构 Jvm = 类加载器 + 执行引擎 + 运行时数据区域 类加载器 ● 作用 类加载器是将编译好的class文件加载到内存中,并进行验证.初始化等步骤,形成能被jvm直接使用的类型. ● 加载 ...

  7. Java基础之jvm,堆的分类新生代、老生代和永久代详解

    JVM是Java Virtual Machine(Java虚拟机),是一种用于计算设备的规范,一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的. 引入Java语言虚拟机后,J ...

  8. java 堆中的永久代_JVM中的堆的新生代、老年代、永久代详解

    JVM中的堆一般分为三大部分:新生代.老年代.永久代,其大致的占比如下: 一.新生代 新生代主要用来存放新生的对象.一般占据堆空间的1/3.在新生代中,保存着大量的刚刚创建的对象,但是大部分的对象都是 ...

  9. Java当中jvm运行时区域新生代、老年代、永久代和Garbage Collection垃圾回收机制【杭州多测师】【杭州多测师_王sir】...

    1.本地方法栈和程序计数器 ==>偏底层一般不会接触到 2.方法区 ==>对应为永久代 3.虚拟机栈(stack) ==>对应为栈 4.堆(heap) ==>对应里面有新生代+ ...

最新文章

  1. 用Spark机器学习数据流水线进行广告检测
  2. C ++定义QML类型
  3. ubuntu16.04/20.04 xfce4下面使用护眼软件redshift
  4. c语言之多线程函数,如何用C语言实现多线程
  5. Linux下查看软件安装路径(whereis)
  6. 洛谷 P1162 填涂颜色题解
  7. 报表中表达式的全局集合(Visual Studio 报表设计器)
  8. linux内核长期支持版本,Linux Kernel 3.12长期支持分支迎来第63个维护版本
  9. IPv6-IPv4过渡技术详解及配置实例
  10. 基于 React.js + redux + bootstrap 的 RubyChina 示例
  11. Shiro Subject详解
  12. linux打开九针串口,RS232 9针串口定义
  13. Adobe Photoshop CC 2019 精简版
  14. 光伏扶贫项目指标下达 如何严把光伏质量关?
  15. BeautifulSoup使用
  16. Linux 腾讯云服务器账户创建流程
  17. 自然语言处理之-----Word2Vec
  18. 鼠标放在图片上,出来小tips
  19. You have new mail in /var/spool/mail/root
  20. 使用poi 创建Excel 保存到本地并下载

热门文章

  1. 2021年安全员-C证(陕西省)考试报名及安全员-C证(陕西省)最新解析
  2. C++生成十字绣图案(二) 面向对象
  3. SylixOS中的几个常用虚拟设备文件
  4. 注意!面试时要注意什么?
  5. 如何在桌面上显示我的计算机,怎么在桌面显示我的电脑 - 卡饭网
  6. 花赚福利社~~~~~~青龙脚本
  7. 【随笔】 我的努比亚z7 mini 相机复活记
  8. oracle execute immediate 游标,EXECUTE IMMEDIATE 常见使用方法
  9. 简单几行代码,python制作美图秀秀软件!
  10. 外卖点餐列表滑动 微信小程序_外卖点餐微信小程序的详细解决方案