iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >GraalVm的反射配置辅助工具agentlib配置及使用
  • 197
分享到

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

2024-04-02 19:04:59 197人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录前言关于agentlib工具配置文件使用前言 Graalvm通过静态分析提前编译来为Java应用程序构建高度优化的本机可执行文件,这就需要在编译时就知道所有的程序类型,而java

前言

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停止后输出,也可以通过添加配置,定期输出,如

  • config-write-period-secs:按照此配置中的指定,每隔几秒钟执行一次定期写入。仅支持大于零的整数值。
  • config-write-initial-delay-secs:第一次写入的秒数。仅支持大于或等于零的整数值。仅当config-write-period-secs大于零时启用。

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

./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的资料请关注编程网其它相关文章!

--结束END--

本文标题: GraalVm的反射配置辅助工具agentlib配置及使用

本文链接: https://www.lsjlt.com/news/140121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作