macOS 下如何编译 hsdis
要顺利使用 Java 的 "-XX:+PrintAssembly" 参数,需要手动编译(其实下载也行)和安装 "hsdis-amd64.dylib" 到本地系统。
编译 hsdis
git clone https://github.com/openjdk/jdk.git
cd jdk/src/utils/hsdis
# 下载 binutils: https://ftp.gnu.org/gnu/binutils/
wget https://ftp.gnu.org/gnu/binutils/binutils-2.35.1.tar.xz
tar -xf binutils-2.35.1.tar.xz
make BINUTILS=binutils-2.35.1 ARCH=amd64
如果一切顺利,构建产物位于 build/macosx-amd64/hsdis-amd64.dylib
安装
安装非常简单,只需要把 hsdis-amd64.dylib 拷贝到对应的目录。
# Java 8
sudo cp build/macosx-amd64/hsdis-amd64.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/server/
# Java 9 or higher
sudo cp build/macosx-amd64/hsdis-amd64.dylib /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/server/
# If you install JDK via Sdkman
cp build/macosx-amd64/hsdis-amd64.dylib ~/.sdkman/candidates/java/11.0.9-zulu/zulu-11.jdk/Contents/Home/lib