8.堆

-Xmx:最大堆大小

-Xms:初始堆大小

-Xmn:年轻代大小

-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值

所有线程共享堆,但也可以划分线程私有的缓冲区。(TLAB)

JDK7 : 新生代 老年代 永久代

JDK8 : 新生代 老年代 元空间

默认堆空间大小

  • 初始内存大小:物理电脑内存大小/64
  • 最大内存大小:物理电脑内存大小/4

主动设置大小:Run -> Edit C…

开发中建议将初始内存大小和最大内存大小设置为一样的值。

查看设置的参数:

  • jps / jstat -gc 进程id
  • -xx:+PrintGCDetails

  • 年轻代(YoungGen):Eden空间、survivor0(from区)、survivor1(to区)
  • 老年代(OldGen)

默认占比:

YoungGen 1/3 OldGen 2/3

Eden 8/10 from 1/10 to 1/10

-XX:NewRatio : 设置新生代与老年代的比例,默认2.

-XX:SurvivorRatio : 设置新生代中Eden区与Survivor的比例,默认8

-XX:-UseAdaptiveSizePolicy : 关闭自适应的内存分配策略

-Xmn :设置新生代最大内存大小

-XX:+PrintGCDetails : 打印GC详情

几乎所有的java对象都是在Eden区被new 出来的

绝大部分的java对象的销毁都在新生代进行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YbEjv6e5-1592223189653)(E:\笔记\Pictures\QQ图片20200529024217.png)]

总结:

  • 针对survivor0 1 :复制之后有交换,谁空谁是to;
  • 关于垃圾回收:频繁在新生区收集,很少在老年区收集,几乎不在永久区/元空间收集

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

所以说,堆空间并不都是共享的。

在这里插入图片描述

空间分配担保

在这里插入图片描述

在这里插入图片描述

逃逸分析

如何快速判断是否发生了逃逸,看new的对象实体是否有可能在方法外被调用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值