• 技术文章 >Java >java教程

    Java虚拟机学习 - 对象内存分配与回收

    黄舟黄舟2017-03-18 17:51:50原创795

    对象优先在Eden上分配

    大多数情况下,对象优先在新生代Eden区域中分配。当Eden内存区域没有足够的空间进行分配时,虚拟机将触发一次 Minor GC(新生代GC)。Minor GC期间虚拟机将Eden区域的对象移动到其中一块Survivor区域。



    大对象直接进入老年代

    所谓大对象是指需要大量连续空间的对象。虚拟机提供了一个XX:PretenureSizeThreshold参数,令大于这个值的对象直接在老年代中分配。

    长期存活的对象将进入老年代

    虚拟机采用分代收集的思想管理内存,那内存回收时就必须能识别那些对象该放到新生代,那些该到老年代中。为了做到这点,虚拟机为每个对象定义了一个对象年龄Age,每经过一次新生代GC后任然存活,将对象的年龄Age增加1岁,当年龄到一定程度(默认为15)时,将会被晋升到老年代中,对象晋升老年代的年龄限定值,可通过-XX:MaxTenuringThreshold来设置。

    Minor GC 和Full GC区别

    新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为对象大多都具备朝生夕灭特性,所以Minor GC非常频繁,回收速度也比较快。

    老年代GC(Major GC / Full GC):指发生在老年代中的GC,出现Major GC后,经常会伴随至少一次的 Minor GC。Major GC的速度一般会比Minor GC慢10倍以上。

    以上就是Java虚拟机学习 - 对象内存分配与回收的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    相关文章:

    Java虚拟机的具体详解

    深入理解Java虚拟机

    Java虚拟机学习 - 类加载机制

    Java虚拟机学习 - 对象访问

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:Java虚拟机学习 - 查看JVM参数及值的命令行工具 下一篇:Java虚拟机学习 - 垃圾收集器
    PHP编程就业班

    相关文章推荐

    • Java学习总结之数组(整理分享)• 详细整理java枚举的使用总结• 带你完全掌握Java NIO(总结分享)• 完全掌握java异常处理机制原理和应用• 一起聊聊JAVA中字符串和数组做参数传递

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网