当前位置: 首页 > news >正文

hotspot中的Java类对象如何保存注解

hotspot中的Java类对象如何保存注解

注解

Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。

Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。

注解的解析

类以及类中函数和字段的注解信息都是通过解析字节码文件获得。

// Sift through annotations, looking for those significant to the VM: static void parse_annotations(...) { ... const int atype = Bytes::get_Java_u2((address)abase + atype_off);//读取字节码 const int count = Bytes::get_Java_u2((address)abase + count_off); const Symbol* const aname = check_symbol_at(cp, atype); ... coll->set_annotation(... }

注解的保存

关键是注解的保存。在hotspot中,使用Annotations类进行保存。

typedef Array<u1> AnnotationArray; class Annotations: public MetaspaceObj { ... AnnotationArray* _class_annotations; //类本身的注解集合 Array<AnnotationArray*>* _fields_annotations;//字段的注解集合 AnnotationArray* _class_type_annotations;//类type的注解集合 Array<AnnotationArray*>* _fields_type_annotations;//字段type的注解集合
  • _class_annotations 和 _class_type_annotations的区别是

    _class_annotations

@DeprecatedpublicclassMyClass{}

​ _class_type_annotations

@NonNullMyClass<String>obj;
  • _fields_annotations 和 _fields_type_annotations的区别是

    _fields_annotations

classExample{@Deprecatedintx;}

​ _fields_type_annotations

classExample{List<@NonNullString>list;}

在InstanceKlass中使用如下字段描述类中所有的注解

class InstanceKlass: public Klass { ... protected: ... Annotations* _annotations;
http://www.jsqmd.com/news/263903/

相关文章:

  • hotspot中的Java类对象如何保存虚函数
  • 强烈安利9个AI论文写作软件,本科生论文无忧!
  • 冥想第一千七百六十七天(1767)
  • 缓存 --- Redis缓存的一致性
  • Gemini认证失败?一文搞定所有疑难
  • 7. 为什么云厂商集体选择 vLLM
  • CF1781F Bracket Insertion
  • 8. vLLM vs TensorRT-LLM
  • 如何配置Dev-C++使用特定的编译器版本?
  • 深入解析:浏览器底层探秘:Chrome的奇妙世界
  • 如何在Dev-C++中设置编译器参数?
  • 4. 为什么 Triton 不够了
  • day143—递归—对称二叉树(LeetCode-101)
  • 5. vLLM 出现前的推理地狱
  • MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程
  • 6. PagedAttention 的历史背景
  • 数据湖与数据仓库的演进与未来:一场技术辩论
  • RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图 - MKT
  • 全网最全MBA开题报告TOP8一键生成论文工具测评
  • 2. 训练 vs 推理:真正烧钱的是哪一步
  • win10 电脑 蓝牙耳机连接后没有声音
  • 为什么大厂都在做智能运维AI平台?AI应用架构师解析背后的商业逻辑
  • 3. OpenAI / DeepSeek 推理系统演进史
  • 为什么所有主流LLM都使用SwiGLU?
  • 模拟南宁理工学院官网页面
  • 2026年长沙婚纱礼服推荐租赁排名:年初备婚请看 - charlieruizvin
  • 兰亭妙微洞察:B 端与 C 端界面设计核心差异,别再用 C 端思维做 B 端
  • 兰亭妙微:以交互设计与UI设计赋能文旅小程序,重塑用户体验界面设计优化新标杆
  • 计算机毕设怎么写?从选题到答辩的超详细通关攻略
  • Linux软件安装 —— JDK安装