JVM内存分配机制(策略)

JVM内存分配遵循三大原则:优先分配到eden区、大对象直接入老年代、长期存活对象转老年代。空间分配担保机制在eden区不足时确保内存分配。文章通过实例分析了不同大小对象在不同GC策略下的分配情况,并介绍了JVM相关参数如-Xmx、-Xmn等的作用。
摘要由CSDN通过智能技术生成

<细节向>JVM内存分配机制(策略)

首先JVM内存分配机制有着三大原则和一个担保机制:
三大原则:
1.优先分配到eden区;
2.大对象,直接分配到老年代;
3.长期存活的对象分配到老年代;
担保机制:
空间分配担保

Firstly,首先验证三大原则之:优先分配到eden区
创建一个4m的字节数组,如下:开始验证
打印gc日志如下:

Heap
 PSYoungGen      total 38400K, used 6759K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
  eden space 33280K, 20% used [0x0000000795580000,0x0000000795c19c00,0x0000000797600000)
  from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
  to   space 5120K, 0% used [0x0000000797600000,0x0000000797600000,0x0000000797b00000)
 ParOldGen       total 87552K, used 0K [0x0000000740000000, 0x0000000745580000, 0x0000000795580000)
  object space 87552K, 0% used [0x0000000740000000,0x0000000740000000,0x0000000745580000)
 Metaspace       used 3078K, capacity 4496K, committed 4864K, reserved 1056768K
  class space    used 339K, capacity 388K, committed 512K, reserved 1048576K

可以明显看到,这个字节数组被优先分配到了年轻代的eden区。
Secondly, 验证第二大原则:大对象,直接放入老年代。
创建一个40m的字节数组,如下:
在这里插入图片描述
打印的gc日志如下:

Heap
 PSYoungGen      total 38400K, used 6759K [0x0000000795580000, 0x0000000798000000, 0x00000007c0000000)
  eden space 33280K, 20% used [0x0000000795580000,0x0000000795c19c00,0x0000000797600000)
  from space 5120K, 0% used [0x0000000797b00000,0x0000000797b00000,0x0000000798000000)
  to   space 5120K, 0% used [0x0000000797600000,
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值