小编J. *_*ith的帖子

了解JVM堆打印输出中的元空间行

在Java 8堆打印输出中,您可能会看到如下所示的行:

Metaspace 使用 2425K,容量 4498K,承诺 4864K,保留 1056768K

https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/considerations.html尝试解释该行:

在以Metaspace开头的行中,使用的值是用于加载类的空间量.该容量值可用于当前分配块的元数据的空间.该承诺值的可用空间块的数量.的保留值是用于元数据的空间保留(但不一定提交)的量.

再次,从上面的链接:

从操作系统请求空间,然后分成块.类加载器从其块中为元数据分配空间(块绑定到特定的类加载器).

我想知道每个字段的含义(使用,容量,承诺,保留),但我很难理解上面的定义.

我的理解是,元空间是从JVM进程的虚拟地址空间中划分出来的.JVM在启动时保留初始大小,基于-XX:MetaspaceSize,它具有未记录的,特定于平台的默认值.我假设保留是指元空间的总大小.空间分为块.我不确定每个块是否具有相同的大小.每个块包含与单个类加载器关联的类元数据.

容量和承诺的声音对我来说就像是免费空间(基于链接的定义).由于元数据存储在块中,因此我假设使用的+容量将等于已提交,但事实并非如此.也许承诺意味着使用的保留空间,但那么使用的意思是什么?元数据使用的空间?那么,还有什么方法可以使用这个空间?

我希望你看到我的困惑.我希望澄清这些定义.

java linux jvm java-8 metaspace

17
推荐指数
1
解决办法
4531
查看次数

标签 统计

java ×1

java-8 ×1

jvm ×1

linux ×1

metaspace ×1