JVM堆内存(新生代,老年代,Xms,Xmx)学习整理
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)学习整理相关推荐
- 04.Java 堆内存 新生代 老年代?
Java 中的堆是 JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( You ...
- JVM堆内存与垃圾收集器
3.1 谈谈Java中不同的引用类型? Java里有不同的引用类型,分别是强引用.软引用.弱引用和虚引用; 强引用:Object object = new Object();即使内存溢出了也不会回收这 ...
- java新生代 老年代比例_JVM老年代和新生代的比例
在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ( Young ) 又被划分为三个区域:Eden.From Survivor.To Surviv ...
- GC算法 (标记清除、复制、标记整理、 分代收集) 、 新生代 老年代
一.标记-清除算法(Mark-Sweep) 1标记阶段:首先通过根节点,标记所有从根节点开始的可达对象.未被标记的对象就是未被引用的垃圾对象 2清除阶段:清除所有未被标记的对象. 不足:1效率问题 ...
- Java架构学习(十二)java内存结构新生代老年代JVM参数调优堆内存参数配置解决堆栈溢出
JVM参数调优与垃圾回收机制 一.java内存结构 Java内存模型:是多线程里面的,jmm与线程可见性有关 Java内存结构:是JVM虚拟机存储空间. Java内存结构图 Java内存机构分为:方法 ...
- JVM 新生代老年代与GC
Java堆可以分为新生代和老年代两个区,其中新生代又可以分为一个Eden区和两个Survivor区,两个Survivor区分别被命名为From和To以示区分,新生代和老年代的比例为1:2,它们共同组成 ...
- JVM新生代老年代GC分析
新生代 复制算法 新生代特点 GC频繁.不稳定 每次清理内存,清理的比较多 每次回收耗时非常短 比如,有100个对象 可能90个需要清理,只需要复制其中的10个,到另一个内存空间 老年代 标记压缩法 ...
- JVM堆内存(heap)详解
很好的一篇文章,转载了http://blog.51cto.com/lizhenliang/2164876?wx= JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在 ...
- JVM堆内存与非堆内存(heap)官方详解
JVM堆内存与非堆内存(heap)官方详解 JAVA堆内存管理是影响性能主要因素之一. 堆内存溢出是JAVA项目非常常见的故障,在解决该问题之前,必须先了解下JAVA堆内存是怎么工作的. 先看下JAV ...
最新文章
- 【约束布局】ConstraintLayout 组件可见性 View.GONE 处理 与 Margin 属性 ( 约束布局可见性处理 | goneMargin 属性 )
- 重庆二师计算机科学与技术,应用型本科院校计算机科学与技术专业一流课程建设思考──以重庆第二师范学院为例...
- STM32 进阶教程 1 - micropython 移植
- 如何利用Python播放和录制声音
- html chart标签,用 Chart.js 画扇形图并显示标签
- SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp
- spring mvc处理静态资源
- python 写txt 换行_写入txt文本的内容为什么没换行效果?
- docker安装kafka和zookeeper
- 麒麟信安天机存储加密系统——国家密码管理局商用密码认证产品
- Java poi导入合并单元格的excel数据【最完整】附pom文件和excel截图
- 儿童节html5小游戏,适合儿童节活动上玩的亲子互动小游戏
- 新手!亚马逊店铺刚下来就被封,什么原因
- 节奏感:出色平面设计的必备要素
- java.io.InvalidClassException异常解决方案
- ​1970年代-大规模集成芯片(LSI)、ASIC和电子游戏吃豆人的诞生
- postgres数据库学习vacuum
- 360°全景图是什么?
- 懂得适时调整思维模式,也是一种能力
- AES,RSA,IBE三种算法的比较