JITWatchを試す2

前回はJITWatchのmakeDemoLogFile.shを使ってHotSpotログファイルを作成したので、今回はソースコードを書いて試してみる。
手順は、ログファイルの作成以外は前回と同じなので割愛。
https://hirakida29.hatenablog.com/entry/2020/06/06/235407

ソースコード

build.gradle

plugins {
    id 'java'
    id 'application'
}

group 'com.example'
version '1.0-SNAPSHOT'
sourceCompatibility = JavaVersion.VERSION_11

mainClassName = 'com.example.Main'

run {
    jvmArgs = ['-XX:+UnlockDiagnosticVMOptions', '-XX:+TraceClassLoading', '-XX:+LogCompilation']
}

Main.java

デモアプリの一部を抜粋 https://github.com/AdoptOpenJDK/jitwatch/blob/master/core/src/main/java/org/adoptopenjdk/jitwatch/demo/MakeHotSpotLog.java

package com.example;

public class Main {

    public Main(int iterations) {
        addVariable(iterations);
    }

    private void addVariable(int iterations) {
        long count = 0;
        for (int i = 0; i < iterations; i++) {
            count = add(count, i);
        }
        System.out.println(count);
    }

    private long add(long a, long b) {
        return a + b;
    }

    public static void main(String[] args) throws Exception {
        new Main(1_000_000);
    }
}

HotSpotログファイルを作成

% ./gradlew run

JITWatchで解析

f:id:hirakida29:20201120222833p:plain