该标志的默认值为true,如果检测失败,它将设置为false,因此您可以简单地使用+ PrintFlagsFinal来查看是否已使用它:
我的 没有 AES-NI的笔记本电脑:
C:>"C:Program FilesJavajdk1.7.0_51binjava" -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 FilesJavajdk7binjava" -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)Javajre7binjava" -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)因此,它适用于使用最新Java
7的x64和i686(WOW64)。该功能是通过https://bugs.openjdk.java.net/browse/JDK-7184394引入的,并反向移植到7u40和7u45。
重要:AES-NI可能仅在 服务器VM 上可用。
在提交错误报告后,Oracle承认了这一点。当他们在Java
8的特性列表中创建了该重要信息时,这些信息就丢失了(后来也移植到了7)。通过
-server在
java或
javaw命令行上提供选项,可以显式选择服务器VM
。



