graalvm学习(四)jvmci与graalvm

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源码
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值