graalvm学习(四)jvmci与graalvm

本文介绍了JVMCI的作用,如何使用JVMCIServiceLocator获取服务,以及如何通过GraalVM封装的类进行字节码编译。还提及了一个示例,展示了如何在代码中应用JVMCI编译器并优化性能。后续内容涉及JVM优化命令、Espresso模块等内容。

jvmci是做什么的:

获取java生成的字节码,可以让开发者自行实现一个编译器(比如将字节码转换为机器码)。

需要关注的三个类:

JVMCIServiceLocator:当您需要使用JVMCI提供的服务时,可以使用JVMCIServiceLocator类来定位这些服务。
HotSpotJVMCICompilerFactory:创建JIT编译器,该编译器可以编译JVMCI提供的服务。
JVMCICompiler:主要是将字节码转换为机器码

graalvm中:

graalvm把jvmci对外的方法封装了一遍,可以在该目录下找到对应的类:

$ graal/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler

类对应的方法应该都是会经过compileMethod

参考demo:
https://github.com/IAmFunkyFrog/JVMCICompilerInsertExamples/tree/master/example3
替换一下Main.java (因为该demo中只有热点代码才会触发到compileMethod),可能demo使用的jdk版本是9,判断是否是热点代码的方式和我本地的不太一样,或者是机器不同?如果无法触发可以把for循环的次数加大。

public class Main
{
    public static int add(int x, int y) {
        return x + y;
    }

    public static void main(String[] args) {
        int lastSum = 0;
        for (int i = 0; i < 100000; i++) {
            lastSum = lastSum = add(1, 2);
        }
        System.out.println("Sum from 0 to 4999: " + lastSum);
    }
}

后续内容可通过知识星球查看:

第五:通过启动参数学习jvm优化相关的命令
第六:espresso模块
第七:Graph
第八:AnalysisUniverse与HostedUniverse
第九:如何使用ide debugger graal源码
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值