性能与压力测试

一、性能监控

1.1 jvm内存模型—堆

在这里插入图片描述
由于所有的对象实例以及数组都要在堆上分配内存,并且堆是垃圾收集器管理的主要区域,也被称为“GC堆”,所以堆是我们优化最多考虑的地方
首先,堆可细分为:

  • Young区(新生代):Eden空间、From Survivor 空间、To Survivor 空间(幸存者区)。
  • Old区(老年代)
  • 永久化 / 元空间,Java8 以前永久代,受 jvm 管理,java8 以后元空间,直接使用物理内存。因此,默认情况下,元空间的大小仅受本地内存限制。

清楚了堆的细分后,下面介绍新对象申请堆空间的处理流程:
在这里插入图片描述
在这里插入图片描述
GC具体流程如下:

  1. 首先,新对象产生时,JVM需要为该对象进行内存空间的申请
  2. 判断Eden区是否有内存空间放下该新对象,如果有,则直接将其保存至Eden区
  3. 如果Eden区空间不足,则会自动执行一个YGC,即Minor GC操作,将Eden区的无用内存空间进行清理
  4. 清理Eden区之后继续判断Eden区内存空间情况,如果充足,则将新对象直接保存在Eden区
  5. 如果执行了Minor GC之后发现Eden区的内存依然不足,则说明该新对象是一个大对象,此时判断老年区空间是否充足,如果充足,则将其保存至老年区
  6. 如果老年区空间不足,则进行一次Full GC清理内存
  7. 进行Full GC后,继续判断老年区是否有充足空间,如果充足,则将新对象保存至老年区
  8. 如果执行了Full GC后发现老年区的内存依然不足,则会报错OutOfMemoryError
  9. 每进行一次YGC(Minor GC)后,判断幸存者区(Survivor)是否有足够的空间,如果有,则那些未被清理的对象将迁移至幸存者区
  10. 如果幸存者区没有足够的空间了,则那些未被清理的对象会保存至老年区
  11. 每次Minor GC后,若处于幸存者区的幸存对象未超过存活阈值,则他们会在S0和S1两块区域中来回迁移,以尽可能留出大块的空闲区以接收每次Minor GC后的幸存对象
  12. 每次Minor GC后,若幸存的对象超过了存活阈值&
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值