微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

metaspace概述与compressedClassPointer的关系

什么是Metaspace:

在java8中,Metaspace是方法区的实现。java7中对应的实现是永久代。方法区是jvm规范,即所有jvm的具体实现都需要实现相应的分区

什么是compressedClasspointer?

系统从32位增加到64位,jvm技术中用于定位class 和object的node也增加到了64位。为了增加内存利用率,objcet
中指向Klass的指针使用32位,即压缩技术(细节请自行百度),
Metaspace的大小:

Metaspace大小限制:

在启动参数中,MaxMetaspaceSize可以限制大小。

Metaspace与compressedClasspointer的关系:

不是包含关系
Oops(compressedClasspointer)即class space,与类本身想关,主要是结构信息、方法信息等
Metaspace包含class space 和non-class space,其中class space是固定值,认1G,计算oom时只包含占用部分。non-class space是非固定值,只受物理内存限制。 oom规则:
1、如果申请class space时超过限制(认1G,可配置),oom
2、如果申请class space 时,class space 已使用500M,non-class space 使用了3G,而maxMetaspace 设置为3.5G,则再申请,会oom

翻译地址:https://www.javadoop.com/post/Metaspace
外文地址:https://stuefe.de/posts/Metaspace/what-is-Metaspace/

外文作者是JVM贡献者,很有权威,有时间可以直接看原文

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐