JDK8 JVM 简单堆分配实验

本文通过一个简单的JVM堆分配实验,探讨了在JDK8环境下,新生代空间分配的问题。实验中设置了特定的JVM参数,并在Eclipse中运行程序连续申请内存。实验结果显示eden空间和from/to空间的比例与预期不符,且老年代和新生代的使用情况与申请的总内存不匹配。作者提出可能的原因包括虚拟机底层的最小分配单位和程序的其他资源占用。通过调整新生代大小为2MB,问题得到解决。
摘要由CSDN通过智能技术生成

实验环境

JDK8
Eclipse Neon.1a Release (4.6.1)

实验问题

在进行新生代的from和to空间分配的配置时

发现分配的空间大小不对。

实验内容

jvm参数

-Xmx20m -Xms20m -Xmn1m -XX:SurvivorRatio=2 -XX:+PrintGCDetails

程序

连续申请10次1M内存空间,总计10M

实验结果

报错如下

[GC (Allocation Failure) [PSYoungGen: 509K->480K(1024K)] 509K->536K(19968K), 0.0005949 secs] [Times: user=0.08 sys=0.02, real=0.00 secs]
Heap PSYoungGen total 1024K, used 747K
eden space 512K, 47% used
from space 512K, 98% used
to space 512K, 0% used
ParOldGen
total 18944K, used 10248K
object space 18944K, 54% used
Metaspace
used 2587K, capacity 4486K, committed 4864K, reserved 1056768K class
space used 287K, capacity 386K, committed 512K, reserved 1048576K
Java HotSpot(TM)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值