博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java虚拟机学习(4):对象内存分配与回收
阅读量:6325 次
发布时间:2019-06-22

本文共 600 字,大约阅读时间需要 2 分钟。

对象优先在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倍以上。
 

转载地址:http://ycmaa.baihongyu.com/

你可能感兴趣的文章
jRebel与xRebel的使用
查看>>
Node.js版本管理工具 nvm
查看>>
jvm默认垃圾收集器
查看>>
用MVVM模式开发中遇到的零散问题总结(3)——自制正则表达式万能绑定转换器...
查看>>
smarty3中文手册
查看>>
英语语法总结---二、英语中的从句是怎么回事
查看>>
Unity3D教程宝典之Shader篇:第二十八讲Compute Shaders
查看>>
zabbix对数据盘磁盘容量进行监控
查看>>
PHP开发api接口安全验证的实例,值得一看
查看>>
Redis-Sentinel Redis的哨兵模式
查看>>
RNN网络【转】
查看>>
Openwrt 远程调试
查看>>
keras的训练引擎:train_array.py和train_generator.py
查看>>
WebSocket
查看>>
使用CefSharp在.Net程序中嵌入Chrome浏览器(十)——独立文件夹部署
查看>>
BZOJ4598: [Sdoi2016]模式字符串(点分治 hash)
查看>>
docker中mysql数据库的数据导入和导出
查看>>
图片 base64转byte[]
查看>>
关于C#中async/await中的异常处理(下)-(转载)
查看>>
Java中使用同步关键字synchronized需要注意的问题
查看>>