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.mzph.cn/news/1179365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hotspot中的Java类对象如何保存虚函数

hotspot中的Java类对象如何保存虚函数 定义 在Java中,几乎所有可被继承的函数被称为虚函数。 In HotSpot, a virtual method is essentially:Any non-static, non-private, non-final instance method whose invocation target is determined at runtime based on the actual…

冥想第一千七百六十七天(1767)

1.今天早上去跑步&#xff0c;然后就去了那个&#xff0c;然后高速后面那个地方&#xff0c;然后早上的时候那个地方没有人&#xff0c;不过在路上碰到了一个人有点怪异&#xff0c;就是他&#xff0c;然后对着电线杆&#xff0c;然后一直看不到脸我看到的时候他一直低着头&…

强烈安利9个AI论文写作软件,本科生论文无忧!

强烈安利9个AI论文写作软件&#xff0c;本科生论文无忧&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09;在论文写作过程中&#xff0c;很多本科生常常面临查重率高、内容重复、语言…

缓存 --- Redis缓存的一致性

缓存 --- Redis缓存的一致性核心问题&#xff1a;更新数据库与缓存的顺序抉择方案一&#xff1a;直接更新缓存&#xff08;不推荐&#xff09;方案二&#xff1a;删除缓存&#xff08;让缓存失效&#xff0c;推荐&#xff09;进阶优化&#xff1a;解决极端场景下的一致性问题各…

Gemini认证失败?一文搞定所有疑难

Gemini认证疑难解答会技术文章大纲认证前的准备工作确保已安装最新版本的Gemini客户端或SDK 检查系统环境是否符合Gemini运行要求 确认网络连接稳定且能访问Gemini服务端常见认证失败原因分析API密钥无效或过期导致认证被拒绝 请求频率超出配额限制触发系统保护 时间戳偏差过大…

7. 为什么云厂商集体选择 vLLM

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;AWS、阿里云、字节跳动等全球顶级云厂商纷纷选择vLLM作为其大模型推理的核心框架。本文深入分析了云厂商集体选择vLLM的原因&#xff0c;包括高吞…

CF1781F Bracket Insertion

有一个空括号串 \(s\),接下来进行 \(n\) 次操作:假设当前括号序列长度为 \(l\),则在产生的 \(l+1\) 个空位中随机选择一个在当前空位以 \(p\) 的概率插入 \(\texttt{()}\),以 \(1-p\) 的概率插入 \(\texttt{)(}\)求…

8. vLLM vs TensorRT-LLM

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;vLLM和TensorRT-LLM是NVIDIA生态中最主流的两大推理框架。本文深入对比了vLLM与TensorRT-LLM的优劣&#xff0c;包括vLLM的灵活调度优势和TensorR…

如何配置Dev-C++使用特定的编译器版本?

在 Dev-C 中配置特定编译器版本需要手动操作&#xff0c;以下是详细步骤&#xff1a;1. 安装目标编译器版本下载所需版本的编译器&#xff08;如 MinGW 的特定 GCC 版本&#xff09;解压至独立目录&#xff08;例如&#xff1a;D:\MinGW-13.1&#xff09;2. 配置 Dev-C打开工具…

深入解析:浏览器底层探秘:Chrome的奇妙世界

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

4. 为什么 Triton 不够了

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;随着大模型规模和复杂度的急剧增长&#xff0c;传统推理框架Triton Inference Server在处理现代推理场景时逐渐显现出局限性。本文深入剖析了Trit…

如何在Dev-C++中设置编译器参数?

在Dev-C中设置编译器参数&#xff0c;可以通过以下步骤操作&#xff1a;1. 打开编译器设置点击顶部菜单栏的 "工具(Tools)" → 选择 "编译器选项(Compiler Options)"。2. 设置全局编译器参数在打开的窗口中&#xff1a;"编译器(Compiler)" 选项卡…

day143—递归—对称二叉树(LeetCode-101)

题目描述给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。示例 1&#xff1a;输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a;输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a;树中节点数目在…

5. vLLM 出现前的推理地狱

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2023年vLLM出现之前&#xff0c;大模型推理面临着显存碎片化、低效调度和高延迟等诸多挑战&#xff0c;被称为"推理地狱"。本文通过回顾pre-vLLM时代的痛点…

MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程

MCC音频剪辑工具v1.1.0.0:自动处理配音气口间隙 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

6. PagedAttention 的历史背景

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; PagedAttention技术是vLLM的核心创新&#xff0c;它借鉴了操作系统中的虚拟内存分页管理思想&#xff0c;革命性地解决了大模型推理中的显存碎片化问题。本文追溯了P…

数据湖与数据仓库的演进与未来:一场技术辩论

内容&#xff1a;节目摘要 简介数据湖的未来两个技术栈会合二为一吗&#xff1f;数据网格&#xff1a;去中心化团队&#xff0c;统一架构&#xff1f;现代数据栈的下一个用例延迟&#xff1a;我们需要多低&#xff1f; 数据湖与仓库、分析与AI/ML、SQL与万物…… 随着数据湖和数…

RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图 - MKT

RNR-Map:为视觉导航构建“可渲染”的新型视觉导航地图https://mp.weixin.qq.com/s/5dFbWpGX8BeJwNt_MGIv-A 在视觉导航任务中,智能体(机器人)如何有效地存储和利用空间记忆是核心难题。传统的地图表征,如占据栅格…

全网最全MBA开题报告TOP8一键生成论文工具测评

全网最全MBA开题报告TOP8一键生成论文工具测评 2026年MBA开题报告写作工具测评&#xff1a;为何需要这份榜单&#xff1f; 随着MBA学习的深入&#xff0c;开题报告成为每位学生必须面对的重要环节。然而&#xff0c;从选题构思到资料整理、框架搭建&#xff0c;再到内容撰写与格…

2. 训练 vs 推理:真正烧钱的是哪一步

作者&#xff1a;HOS(安全风信子) 日期&#xff1a;2026-01-17 来源平台&#xff1a;GitHub 摘要&#xff1a; 2026年&#xff0c;AI行业的成本结构已经发生根本性转变。本文通过云厂商真实数据揭示&#xff0c;推理的累计成本已超过训练10倍以上&#xff0c;成为真正烧钱的环节…