该标志的默认值为 true,如果检测失败,它将设置为 false,因此您只需使用 +PrintFlagsFinal 即可查看是否使用了该标志:
我的笔记本电脑没有AES-NI:
C:\>"C:\Program Files\Java\jdk1.7.0_51\bin\java" -XX:+PrintFlagsFinal -version | find "UseAES"
bool UseAES = false {product}
bool UseAESIntrinsics = false {product}
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
在带有AES-NI的台式机上相同:
C:\>"C:\Program Files\Java\jdk7\bin\java" -XX:+PrintFlagsFinal -version | find "AES"
bool UseAES = true {product}
bool UseAESIntrinsics = true {product}
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
C:\>"C:\Program Files (x86)\Java\jre7\bin\java" -XX:+PrintFlagsFinal -version | find "AES"
bool UseAES = true {product}
bool UseAESIntrinsics = true {product}
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode, sharing)
因此,它适用于x64和i686(WOW64)以及最近的Java 7。该功能随 https://bugs.openjdk.java.net/browse/JDK-7184394 一起引入,并向后移植到 7u40 和 7u45。
重要提示:AES-NI 可能仅在服务器虚拟机上可用。
Oracle在提交错误报告后承认了这一点。当他们创建Java 8的featues列表时,这个重要的信息丢失了(后来它也被向后移植到7)。可以通过在 或 命令行上提供选项来显式选择服务器 VM。-server
java
javaw