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 arr = sort();
        return f + arr.get(1);
    }

    /**
     * 增加代码复杂度,不然看不到jit的效果
     * @return
     */
    public static List sort(){
        List 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  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
    windows安装使用JITWatch_第1张图片
  2. 可以探索了:
    windows安装使用JITWatch_第2张图片

你可能感兴趣的:(Java基础知识)