类元数据classmetadata

use-d use-d     2022-12-28     213

关键词:

Java classes在Java hotspot VM内部表示为类元数据。
在之前Java hotspot VM版本,类元数据在持久代中分配。
在JDK8,持久代被移除,并且类元数据在本地内存中分配。
 
默认情况下,本地内存都可以被用于类元数据。
可以使用MaxMetaspaceSize 选项设置在本地内存允许设置的最大类元数据。
Java hotspot VM显示的管理元数据空间。
OS请求空间,然后分成分片,类加载器分配元数据空间从分片中,当类没有被加载器加载时,它的分片交被回收以备OS重新使用。
元数据使用由mmap分配的空间,而不是由malloc分配的。
如果UseCompressedOops 与UseCompressedClassesPointers 选项同时被使用,那么两种逻辑不同的本地内存区域会处理类元数据。
 
当类被卸载时,类元数据将被释放。由于垃圾回收而被卸载的Java classes,垃圾回收会卸载并释放类元数据。
当类元数据达到一定水平时,会引起垃圾回收。在垃圾回收后,可以根据类元数据释放的空间量来确定是升高high-water mark还是降低high-water mark。如果升高high-water mark可能会引起垃圾回收。high-water mark最初设置为MetaspaceSize选项的值。
根据MaxMetaspaceFreeRatio 与MinMetaspaceFreeRatio两个选项决定high-water mark的提高还是降低。
如果已经分配的类元数据空间占比大于MaxMetaspaceFreeRatio的值,则high-water mark将降低。
如果已经分配的类元数据空间占比小于MinMetaspaceFreeRatio的值,high-water mark将提升。
 
可以为MetaspaceSize 选择指定更高的值,以避免对类元数据的过早垃圾回收。
为应用程序分配多少类元数据空间取决于应用程序,没有一个通用标准。
 
Heap PSYoungGen total 10752K, used 4419K [0xffffffff6ac00000, 0xffffffff6b800000, 0xffffffff6b800000) eden space 9216K, 47% used [0xffffffff6ac00000,0xffffffff6b050d68,0xffffffff6b500000) from space 1536K, 0% used [0xffffffff6b680000,0xffffffff6b680000,0xffffffff6b800000) to space 1536K, 0% used [0xffffffff6b500000,0xffffffff6b500000,0xffffffff6b680000) ParOldGen total 20480K, used 20011K [0xffffffff69800000, 0xffffffff6ac00000, 0xffffffff6ac00000) object space 20480K, 97% used [0xffffffff69800000,0xffffffff6ab8add8,0xffffffff6ac00000) Metaspace used 2425K, capacity 4498K, committed 4864K, reserved 1056768K class space used 262K, capacity 386K, committed 512K, reserved 1048576K
 
used为加载类使用的空间
capacity为可当前分片中可用的元数据空间
committed为可用的分片数量
reserved为元数据保留的空间数量
 
 
 
 
 
 
 

通过包装器传递类元数据

】通过包装器传递类元数据【英文标题】:Passingclassmetadatathroughawrapper【发布时间】:2016-02-0316:08:54【问题描述】:我想看看是否有办法让包装类在运行时将属性附加到自身,或任何其他方式从包装类继承某些元数据。我希望这... 查看详情

我们可以用类元数据填充下拉列表吗?

】我们可以用类元数据填充下拉列表吗?【英文标题】:Canwepopulatedropdownwithclassmetadata[duplicate]【发布时间】:2018-07-2006:10:27【问题描述】:这是我的视图模型类:publicclassCustomerEditViewModel[Display(Name="CustomerNumber")]publicstringCustomerID... 查看详情

java 类元数据是不是在堆上?

】java类元数据是不是在堆上?【英文标题】:Dojavaclassesmetadatagoontheheap?java类元数据是否在堆上?【发布时间】:2013-07-0216:37:42【问题描述】:在Java中,当类加载器加载类文件时,加载的类在哪里?在堆里?我知道对象位于堆中... 查看详情

如何从方法装饰器访问类元数据

】如何从方法装饰器访问类元数据【英文标题】:Howtoaccessclassmetadatafrommethoddecorator【发布时间】:2018-06-2818:52:33【问题描述】:我有两个装饰器。一个类装饰器和一个方法装饰器。类装饰器定义了我想在方法装饰器中访问的元... 查看详情

为缺少弱链接祖先的类实例化类元数据

】为缺少弱链接祖先的类实例化类元数据【英文标题】:Instantiatingclassmetadataforclasswithmissingweak-linkedancestor【发布时间】:2021-05-2816:12:44【问题描述】:当我使用Xcode12.5和Swift5.4运行我的应用程序时。我在pre-main中遇到了崩溃:inst... 查看详情

使用springannotationutils解决代码获取类元数据信息

昨天有一个小伙伴遇到一个问题。他最开始是通过在类上面添加注解(这个类纳入了Spring容器的管理),然后再通过继承Spring容器的扩展类ApplicationObjectSupport找到Spring容器中所有标注了之前提到的注解。后面解析这个注解,... 查看详情

Django 中类元的目的是啥?

】Django中类元的目的是啥?【英文标题】:WhatisthepurposeoftheclassmetainDjango?Django中类元的目的是什么?【发布时间】:2020-06-1510:37:33【问题描述】:在Djangoserializers.py文件中的类中使用classMeta:的目的是什么?【问题讨论】:它告诉... 查看详情

如何从 Typescript 中的类元组中提取鉴别器

】如何从Typescript中的类元组中提取鉴别器【英文标题】:HowtoextractdiscriminatorfromtupleofclassesinTypescript【发布时间】:2021-07-2711:18:27【问题描述】:给定以下代码:abstractclassFruitabstractreadonlyfruitType:string;classBananaextendsFruitreadonlyfruitT... 查看详情

python类元编程初探(代码片段)

在《流畅的Python》一书中提到:Classesarefirst-classobjectinPython,soafunctioncanbeusedtocreateanewclassantanytime,withoutusingtheclasskeyword.在Python中,声明一个类可以有两种方法:>>>classX:...a=1...>>>X=type(& 查看详情

使用springannotationutils解决代码获取类元数据信息(代码片段)

昨天有一个小伙伴遇到一个问题。他最开始是通过在类上面添加注解(这个类纳入了Spring容器的管理),然后再通过继承Spring容器的扩展类ApplicationObjectSupport找到Spring容器中所有标注了之前提到的注解。后面解析这个注解,... 查看详情

ios-isa指针;objc实例对象类元类根类根元类(代码片段)

一、Object(objc实例对象),Class(类),Metaclass(元类),Rootclass(根类),Rootclass‘smetaclass(根元类)要理解iOS中的isa指针,我们就离不开Objective-C中类的几种数据结构&# 查看详情

spring笔记-metadata

...下相关接口和类其在Spring的Condition接口中有用到来看一下ClassMetadata的接口基本是Class相关的一致的,所以ClassMetadata实质是对Class的一种抽象和适配下面看一下ClassMetadata的实现类StandardClassMetadata,可以看到构造函数中传入的参数是Cla... 查看详情

通过 typescript 3.0 通用休息元组类型从类元组返回实例元组

】通过typescript3.0通用休息元组类型从类元组返回实例元组【英文标题】:returninstancetuplefromclassestupleviatypescript3.0genericresttuplestype【发布时间】:2019-01-1511:54:24【问题描述】:虽然从类类型中获取正确的实例类型,但工作方式如... 查看详情

java对象内存布局(代码片段)

文章目录1、对象头对象标记MarkWord类元信息(又叫类对象指针)ClassPointer数组长度(ArrayLength)(可选)2、实例数据(对象体)3、对齐填充4、指针压缩5、再聊对象头的MarkWord6、JOL分析对象在Java虚... 查看详情

从python中的类元信息类型提示__init__函数(代码片段)

我想做的是用它的SQLAlchemy类来复制DeclarativeMeta所做的事情。有了这段代码,fromsqlalchemyimportColumn,Integer,Stringfromsqlalchemy.ext.declarativeimportdeclarative_baseBase=declarative_base()classPerson(Base):__tablename__='p 查看详情

java反射demo

基于类的反射Class对象为您提供接入类元数据的反射的所有基本hook。这类元数据包括关于类自身的信息,如包和类的父类,以及该类实施的接口。它还包括该类定义的构造函数、字段和方法的详细信息。这些最后的项目都是编程... 查看详情

读java性能权威指南(第2版)笔记17_垃圾回收d

...译器和JVM运行时使用,它所保存的数据被称为类元数据(classmetadata)1.2.1. 对于终端用户,元空间是不透明的1.2.2. 元空间并不保存类的实例或者反射对象1.3. 通过永久代(permgen)的实现来处理的1.4. 元空间的大小... 查看详情

经营类元宇宙世界-abellworld

欢迎各位新老朋友,我们细说P2E(PlaytoEarn),为广大用户提供一个深入了解链游的平台。不定期的跟大家分享一些精品项目和最新链游方向,也欢迎大家关注我们。我们第三十八期分享的是一款真正由社区拥... 查看详情