深入理解JVM虚拟机学习笔记(三)内存分配和回收策略
来源:互联网 发布:淘宝客转链工具app 编辑:程序博客网 时间:2024/06/05 19:26
大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够的空间进行分配时,虚拟机将发起一次Minor GC。
新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多具有朝生夕灭的特性,所以Minor GC 非常频繁,一般回收速度也比较快。
老年代GC(Full GC/Major GC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的Minor GC。非绝对。
大对象直接进入老年代
所谓大对象是指需要大量连续内存空间的Java对象。最典型的大对象就是那种很长的字符串和数组。
虚拟机提供了一个-XX:PretenureSizeThreshold参数,另大于这个设置值的对象直接在老年代中分配,这样做的目的是避免在Eden区和两个Survivor区之间出现大量的内存拷贝。
长期存活的对象将进入老年代
虚拟机采用分代收集的思想来管理内存,那么内存回收时就必须识别哪些对象应当放在新生代,哪些对象应当放在老年代,为了这一点,虚拟机给每个对象定义了一个对象年龄计数器,如果对象在Eden区出生,并经历第一次Minor GC后仍然存活,并且能被Survivor容纳的话,就被移动到Survivor区,并将对象年龄设为1,对象在Survivor区中每次Minor GC都没有被回收掉,那么年龄加1,当年龄增加到一定程度,默认是15岁,则被晋升到老年代中。对于年龄阈值可以通过参数-XX:MaxTenuringThreshold来设置。
动态对象年龄判定
上述并不一定总是要求。如果在Survivor中相同年龄对象所占空间总和大于Survivor空间的一半,年龄大于或者等于该年龄的对象直接进入老年代。无需等到XX:MaxTenuringThreshold设置的年龄。
空间分配担保
- 深入理解JVM虚拟机学习笔记(三)内存分配和回收策略
- 深入Java虚拟机学习笔记 - 内存分配和回收策略
- 《深入理解Java虚拟机》学习笔记(3)--内存分配与回收策略
- 深入理解Java虚拟机笔记---内存分配与回收策略
- 深入理解Java虚拟机笔记---内存分配与回收策略
- Java内存区域分配、存储、垃圾回收策略与回收机制(深入JVM虚拟机)
- jvm学习笔记二(java内存分配策略和回收策略)
- 【Java】深入理解JVM学习笔记(三) —— GC收集器和内存分配
- JVM学习笔记(4)-内存分配与回收策略
- 【深入理解JVM】:内存分配与回收策略
- 【深入理解jvm】内存分配与回收策略
- 深入理解JVM学习笔记-垃圾收集器和内存分配策略
- 深入理解java虚拟机-3 内存分配与回收策略
- 深入理解java虚拟机-内存分配与回收策略
- 笔记:深入理解JVM 第3章 垃圾回收器与内存分配策略
- 深入理解Java虚拟机----(三)内存分配策略和垃圾收集器
- JVM虚拟机-内存分配与回收策略
- 深入理解Java虚拟机——JVM的内存结构和内存分配策略
- Unity 点击屏幕与UGUI的区分
- 关于数据库索引
- Java动态代理深入解析
- 这是我的第一篇博客
- 欢迎使用CSDN-markdown编辑器
- 深入理解JVM虚拟机学习笔记(三)内存分配和回收策略
- 一起Talk Android吧(第一回:概述)
- Apache Commons Compress
- POJ 1426 Find The Multiple dfs or 暴力
- 欢迎使用CSDN-markdown编辑器
- 【Unity3D】Socket通讯(1)——连接
- unity 检测物体是否在相机视野范围内
- 练习
- SSH框架之Struts的数据校验(1)