IdealGraphVisualizer的下载与使用
网上说igv只能在jdk1.6下使用,其实不然,我在jdk11下依然可以使用,方法如下
-
从github上下载IdealGraphVisualizer
https://github.com/openjdk/jdk/tree/master/src/utils
使用Chrome的Gitzip插件可以只下载IdealGraphVisualizer,不需要下载整个jdk
有关Gitzip的下载与使用,请科学上网后在Chrome商店下载,并阅读相关指南
2.安装
在IdealGraphVisualizer目录下执行
mvn install
3. 使用
假设有程序
public class Loop_sample{
public static final int NUM = 15000;
public static int doubleValue( int i)
{
for( int j= 0; j< 100000; j++);
return i * 2;
}
public static long calcSum()
{
long sum = 0;
for (int i = 1; i <= 100; i++)
{
sum += doubleValue( i);
}
return sum;
}
public static void main( String[] args)
{
for (int i = 0; i < NUM; i++)
{
calcSum();
}
}
}
将其编译为可执行文件
javac Loop_sample.java
在自己的slowdebug下的openjdk执行
~/src/java/jdk11u-dev/build/linux-x86_64-normal-server-slowdebug/jdk/bin/java -Xbatch -XX:PrintIdealGraphFile=5.xml Loop_sample
这里有2个选项
xbatch:禁止后台编译,也就是说解释执行与编译过程必须按顺序执行
-XX:PrintIdealGraphFile=5.xml表示将理想图文件输出到5.xml
如果想看不同级别的编译输出结果,可以使用下面的选项
-XX:PrintIdealGraphLevel
The JVM support is controlled by the flag -XX:PrintIdealGraphLevel=#
where #
is:
- 0: no output, the default
- 1: dumps graph after parsing, before matching, and final code (also dumps graphs for failed compilations, if available)
- 2: more detail, including after loop opts
- 3: even more detail
- 4: prints graph after parsing every bytecode (very slow)
在IdealGraphVisualizer文件夹下执行
./igv.sh
在界面中选择要打开的文件
打开之后即可查看左侧doubleValue对应的理想图