文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

GraalVm的反射配置辅助工具agentlib配置及使用

2024-04-02 19:55

关注

前言

Graalvm通过静态分析提前编译来为Java应用程序构建高度优化的本机可执行文件,这就需要在编译时就知道所有的程序类型,而java中的反射、动态代理等功能,在编译时不确定具体的类型,所以在使用GraalVm构建native image前需要通过配置列出反射可见的所有类型。反射的配置是一个json格式的文件。为了简化这种反射的配置,GraalVm提供agentlib工具,来辅助生成这个配置文件

Reflection配置文档:https://github.com/oracle/REFLECTION.md

agetnlib文档:https://www.graalvm.org/docs/Native-Image/user/CONFIGURE

关于agentlib工具

为了更方便地准备这些配置文件,GraalVM提供了一个代理,该代理可以跟踪常规Java VM上执行动态功能的所有使用情况。可以在GraalVM的 java命令的命令行上启用它,如:

./java -agentlib:native-image-agent=config-output-dir=/home/kl/graal/data/ -jar /home/kl/graal/app/kk-risk-model-0.0.1-runner.jar

config-output-dir配置好配置的输出目录,默认情况下,配置文件生成将在jvm停止后输出,也可以通过添加配置,定期输出,如

每个配置间使用逗号分隔,如:

./java -agentlib:native-image-agent=config-output-dir=/home/kl/graal/data/,config-write-period-secs=60,config-write-initial-delay-secs=5 -jar /home/kl/graal/app/kk-risk-model-0.0.1-runner.jar

在执行期间,代理与Java VM交互以拦截所有查找类,方法,字段,资源或请求代理访问的调用。然后,代理生成的文件jni-config.json,reflect-config.json,proxy-config.json、resource-config.json在指定的目录输出。生成的文件是JSON格式的独立配置文件,其中包含所有拦截的动态访问。

在使用agentlib生成配置时,建议将应用的测试用例全部跑一边,让应用覆盖到所有的业务接口,不然,生成的配置可能覆盖不到所有的反射类

配置文件使用

通过将生成的配置文件放置在项目的resources/META-INF/native-image/类路径上的目录中使其生效,如果在quarkus中使用,还可以通过添加如下的配置参数使配置生效:

quarkus.native.additional-build-args =-H:ResourceConfigurationFiles=resources-config.json

第一种方案是GraalVm提供的默认的配置加载路径,第二种方式是Quarkus提供的配置加载方式,所有在quarkus中使用maven构建的话,可以在构建命令中看到你配置的指令,而第一种方案是看不到的,但是也是生效的。

ps:直接下载下来的graalvm sdk不包含如上功能,需要在graalvm的bin目录下执行gu install native-image安装好native-image环境后才行

以上就是GraalVm的反射配置辅助工具agentlib的详细内容,更多关于GraalVm的反射配置辅助工具agentlib的资料请关注编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯