windows安装使用JITWatch

  1. 原来在idea用了JITWatch插件,但是效果不好,换成直接使用。需要先安装hsdis、然后从github拉JITWatch的代码,然后编译使用;

  2. 安装hsdis-amd64.dll,hsdis-amd64.dll下载地址,下载后放入如下目录F:\LAMP\Java\jdk1.8.0_45\jre\bin\server,和jvm.dll一起

  3. 拉github代码,JITWatch源码地址,然后使用"gradlew clean build run"进行构建,报了网络错误,将仓库设置为了阿里云仓库。在"C:\Users\Rail.gradle"新增init.gradle文件如下:

allprojects{
  repositories {
    def REPOSITORY_URL = 'http://maven.aliyun.com/nexus/content/groups/public/'
      all { ArtifactRepository repo ->
        if(repo instanceof MavenArtifactRepository){
          def url = repo.url.toString()
          if (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com/')|| url.startsWith('https://plugins.gradle.org/m2/')) {
            project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."
            remove repo
          }
       }
    }
    maven {
      url REPOSITORY_URL
    }
  }
}

后面报错

13:53:42.844 [DEBUG] [org.apache.http.conn.ssl.SSLConnectionSocketFactory] Connecting socket to repo.jfrog.org/52.2.106.171:443 wit
h timeout 30000

超过30s还是不通,使用了系统代理:

systemProp.http.proxyHost=127.0.0.1
systemProp.http.proxyPort=1080
systemProp.https.nonProxyHosts=www.baidu.com|localhost

systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=1080
systemProp.https.nonProxyHosts=www.baidu.com|localhost

接着报错

Error:java: Illegal char <:> at index 48: jitwatch Could not resolve org.slf4j:slf4j-api:1.7.12.

在idea点击的项目structure处理一下,或者重新导入。gradle构建还是一直失败。

  1. 换成maven构建,很快就成功了。使用如下参数:
-server
-XX:+UnlockDiagnosticVMOptions
-XX:+TraceClassLoading
-XX:+PrintAssembly
-XX:+LogCompilation
-XX:LogFile=live.log

运行如下代码:

public class VolatileAssembly {

    public static void main(String[] args){
        int sum = 0;
        for(int i = 0; i < 100000; i++){
            sum += addOne();
        }
        System.out.println("sum = " + sum);
    }

    public static int addOne( ){
        int a = 2;
        int b = 1;
        int c = a + b;
        int d = c/2;
        int e = c + d;
        int f = a + e;

        List<Integer> arr = sort();
        return f + arr.get(1);
    }

    /**
     * 增加代码复杂度,不然看不到jit的效果
     * @return
     */
    public static List<Integer> sort(){
        List<Integer> arr = new ArrayList<>();
        arr.add(3);
        arr.add(1);
        arr.add(5);
        arr.add(2);
        arr.add(4);
        int len = arr.size();
        for(int i = 0; i <len; i++){
            for(int j = i; j < len - 1; j++){
                if(arr.indexOf(j) > arr.indexOf(j + 1)){
                    int temp = arr.indexOf(j);
                    arr.set(j, arr.indexOf(j + 1));
                    arr.set(j + 1,temp);
                }
            }
        }
        return arr;
    }
}
  1. 上面已经通过maven构建好了JITWatch,打开launchUI.bat ,选择config,配置源码和class文件,然后点击"open log"选择上一步输出的live.log。点击start
    在这里插入图片描述
  2. 可以探索了:
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值