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

JVM中对象内存分配探究(一)

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

JVM中对象内存分配探究(一)

环境:JDK8

软件:idea2019

准备:设置测试类的堆内存VM options:-Xms20m -Xmx20m

名词解析:

ManagementFactory:是一个提供各种获取JVM信息的工厂类,使用ManagementFactory可以获取大量的运行时JVM信息,比如JVM堆的使用情况,以及GC情况,线程信息等,通过这些数据项可以了解正在运行的JVM的情况,以便做出相应的调整。

ManagementFactory.getMemoryPoolMXBeans()

Code Cache:(非堆),JVM生成的native code存放的内存空间。
metaspace:元空间(非堆),存储jvm中的元数据,包括byte code,class等信息。
Compressed Class Space:压缩类空间(非堆),实际是压缩的指针,目的是为了在 64bit 机器上使用 32bit 的原始对象指针,详细用法自行搜索。
PS Eden Space:伊甸区(堆内存)
PS Survivor Space:幸存区(堆内存)
PS Old Gen:老年区(堆内存)

对象内存的分配时机

现象一:两次输出Egen区内存一致,所以在运行时小于Egen区剩余空间的对象就已经分配好了内存?

现象二:两次输出Egen区内存一致,但是OldGen区增加了大约4MB,正好是allocation5的大小,所以大于Egen区剩余空间的对象是在运行时才给分配的内存?

小于Egen区剩余空间的对象,内存分配在Egen区;

大于Egen区剩余空间的对象,内存直接分配在OldGen区;

未完待续。。。

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

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

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