栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

jvm之堆

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jvm之堆

一。概述:

 

 二、堆内存细分:

 从逻辑上jvm堆上包含方法区,但实际上 只包含 新生代和老年代

例子:

从上面的例子可知:Eden+S0+S1+Old Gen = 10M

jdk1.8和jdk1.8之前方法区的对比:

验证:

 三、堆内存大小设置和查看

a.设置堆空间大小的参数:

-Xms 用来设置堆空间(年轻代+老年代)的初始内存大小

        -X 是jvm的运行参数

        ms 是memory start

-Xmx 是用来设置堆空间(年轻代+老年代)的最大内存大小。

b.默认堆空间的大小:

初始内存大小:物理电脑内存的 64分之1

最大内存大小:物理电脑内存大小的 4分之1

c.开发中建议将-Xms 和Xmx 设置成一样的值:因为避免频繁的扩展和降低内存对系统造成不必要的压力。

 这里将-Xms 和-Xmx 设置成600m 为什么显示的是575m:

因为只包含一个survivor 区。

d.查看设置的参数:

方式一:jps 查看到进程号,然后根据 jstat -gc 进程号

方式二:-XX+PrintGCdetails。

 四、年轻代和老年代细分及设置大小:

 

 

根据 -XX:NewRatio=2   (一般不会调动)设置新生代和老年代的比例。

可以根据jinfo -flag NewRatio 进程号  查看。

 根据 -XX:SurvivorRatio=8 (默认)设置Eden 和S0 和 S1 的比例。

 根据jvisualvm查看Eden和S0 和S1的比例是 6:1:1

原因是 自适应(-XX:+UserAdaptiveSizePolicy(默认有这个参数,去掉就好了))

 -Xmn 设置新生代大小。(一般设置用NewRatio 设置比例)

五、图解对象分配过程:

a、概述:

b、图解:

 

 注:红色的是垃圾,绿色的不是垃圾。

        S0 中绿色对象的 “1” 是年龄计数器。

        谁空谁是to。

        Eden区满的时候触发YGC S0和S1区满的时候不会触发YGC。

 

设置晋升老年代的阈值: -XX:MaxTenuringThreshold=15(默认是15)晋升到老年代。

c、总结:

六、对象分配过程特殊情况:

七:内存分配策略:

 验证大对象直接进入老年代:

 

 说明一下空间分配担保:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/686256.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号