JVM堆内存

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

文章目录

  • JVM堆内存
  • 新生代
    • 1.Eden区
    • 2.s0,s1
  • 老年代
  • Xmx和Xms

新生代

新生代主要分为Eden区,s1,s0三个区域,分别内存占比8:1:1。

1.Eden区

当新创建一个对象,这个对象首先会到Eden区,如果Eden区放满了,会产生一次young GC 这次GC会把Eden区没有用到的对象回收掉,并把可用对象复制到Survival 区,并记录这些对象一次GC年龄。

2.s0,s1

当Eden区内存满了后,GC收集器会触发复制算法,将Eden区的存活对象复制到s0或者s1,s0和s1始终保持有一个空的区域,当s1或s0其中一个满了,也会触发一次GC并把可用对象赋值到另一个空区域,当GC到一定次数后依然存活的对象会进入老年代。

老年代

当经过多次GC的对象年龄达到一个阈值而没有被回收或者比较大的对象,会直接进入老年代,当老年代内存满了,会触发full GC这个时候会清理整个堆内存未被使用的对象,GC时老年代采用的是标记整理算法。

Xmx和Xms

Xms 用来指定初始堆内存,默认占系统内存1/64,java应用启动后jvm会向操作系统申请内存,在申请的内存到达Xms之前,所有申请的内存不用了会还给操作系统,当申请的内存达到Xms,那么Xms之前的内存只会清空不会还给操作系统,而申请超过初始内存小于最大内存这些内存也会归还给操作系统,如果程序启动默认就会申请很多内存,建议把Xmx和Xms设置成一样。

Xmx 用来指定最大堆大小,默认占系统内存1/4,当申请的内存超过最大堆内存就会造成堆OutOfMemoryError,导致程序直接挂掉。

JVM堆内存(新生代,老年代,Xms,Xmx)学习整理相关推荐

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

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

  2. JVM堆内存与垃圾收集器

    3.1 谈谈Java中不同的引用类型? Java里有不同的引用类型,分别是强引用.软引用.弱引用和虚引用; 强引用:Object object = new Object();即使内存溢出了也不会回收这 ...

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

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

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

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

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

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

  6. JVM 新生代老年代与GC

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

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

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

  8. JVM堆内存(heap)详解

    很好的一篇文章,转载了http://blog.51cto.com/lizhenliang/2164876?wx= JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在 ...

  9. JVM堆内存与非堆内存(heap)官方详解

    JVM堆内存与非堆内存(heap)官方详解 JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAV ...

最新文章

  1. 【约束布局】ConstraintLayout 组件可见性 View.GONE 处理 与 Margin 属性 ( 约束布局可见性处理 | goneMargin 属性 )
  2. 重庆二师计算机科学与技术,应用型本科院校计算机科学与技术专业一流课程建设思考──以重庆第二师范学院为例...
  3. STM32 进阶教程 1 - micropython 移植
  4. 如何利用Python播放和录制声音
  5. html chart标签,用 Chart.js 画扇形图并显示标签
  6. SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp
  7. spring mvc处理静态资源
  8. python 写txt 换行_写入txt文本的内容为什么没换行效果?
  9. docker安装kafka和zookeeper
  10. 麒麟信安天机存储加密系统——国家密码管理局商用密码认证产品
  11. Java poi导入合并单元格的excel数据【最完整】附pom文件和excel截图
  12. 儿童节html5小游戏,适合儿童节活动上玩的亲子互动小游戏
  13. 新手!亚马逊店铺刚下来就被封,什么原因
  14. 节奏感:出色平面设计的必备要素
  15. java.io.InvalidClassException异常解决方案
  16. ​1970年代-大规模集成芯片(LSI)、ASIC和电子游戏吃豆人的诞生
  17. postgres数据库学习vacuum
  18. 360°全景图是什么?
  19. 懂得适时调整思维模式,也是一种能力
  20. AES,RSA,IBE三种算法的比较

热门文章

  1. firewall添加白名单_详解firewall的规则设置与命令(白名单设置)
  2. 搜索引擎的爬虫技术研究
  3. 网络类型 ---- PAP认证配置 ---- CHAP认证----隧道技术
  4. .pcd文件转换为.ply文件
  5. 研究7——发展与应用
  6. root后手机银行用不了,root之后手机银行不能用
  7. 多元回归分析的心得(笔记)
  8. 计算机硬盘无法启动怎么办,开机后硬盘无法引导怎么办
  9. UML一篇文章就学通!
  10. 京东商品浏览网页制作:HTML+CSS