我用新的内存选项重新启动了一个 Java 进程,-Xms4G -Xmx4G -XX:MaxDirectMemorySize=6G
并想验证这些更改是否正确应用,尤其是 6G 的直接内存。
我发现验证这一点的第一个解决方案是通过java
它自己,但这只是报告了一个0
,暗示我的新设置没有效果:
bash-4.4$ java -XX:+PrintFlagsFinal -version | grep MaxDirect
uintx MaxDirectMemorySize = 0 {product}
openjdk version "1.8.0_242"
OpenJDK Runtime Environment (build 1.8.0_242-b08)
OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
我后来发现的第二个解决方案是 via jinfo
,这显然证实了6G
我打算设置的:
bash-4.4$ jinfo -flag MaxDirectMemorySize 1
-XX:MaxDirectMemorySize=6442450944
我以前依赖于java -XX:+PrintFlagsFinal
其他目的,但现在我想知道为什么它不返回预期值。为什么java
和jinfo
返回不同的结果?