我正在使用 intel i386、Ubuntu 14。 OpenJDK 版本信息显示为$java -version
is
java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK Server VM (build 24.65-b04, mixed mode)
如上所述here https://wikis.oracle.com/display/HotSpotInternals/PrintAssembly我已经复制了所需的二进制文件hsdis-i386.so
到以下地点
/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/server
and
/usr/lib/jvm/java-7-openjdk-i386/jre/lib/i386/client
然后我就跟着this http://dolzhenko.blogspot.in/2010/04/java-printassembly.html博客上的解决方法并尝试获取 java 程序的汇编代码。我使用下面的命令来测试示例 java 程序MyClass.java
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -XX:PrintAssemblyOptions=hsdis-print-bytes -XX:CompileCommand=print,MyClass MyClass
我在控制台上收到的消息是
OpenJDK Server VM warning: PrintAssembly is enabled; turning on DebugNonSafepoints to gain additional output
CompilerOracle: unrecognized line "print Test"
c = 50
Where MyClass.java
is
public class MyClass{
public static void main(String [] args){
int a = 10;
int b = 40;
int c = a + b;
System.out.println("c = "+c);
}
}
根据我的理解并查看上面的消息,jvm 能够找到hsdis-i386.so
所以它说PrintAssembly is enabled
,但是它没有显示任何汇编代码。请帮我指出我犯的错误。