如何在cmd中使用java来获得稳定的输出?

How to use java in cmd to get a stable output?

听起来很奇怪的问题,但这是有原因的。

我正在努力使用 VC++ 代码自动找出 JVM 可以使用的最大内存。我想使用 java cmd 简单地启动 JVM。

我的想法是:

运行 java -Xmx3999G -version 类似命令和输出,如果JVM启动成功,会有类似

的东西

java version "1.8.0_45"

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

否则会输出类似

的内容

Error occurred during initialization of VM Unable to allocate

131039232KB bitmaps for parallel garbage collection for the r equested

4193255424KB heap. Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

现在的关键是如何知道JVM是否启动了?我可以在输出中找到一些关键字,例如 java version 以了解它已启动。但是如果 java 更新或其他东西,输出会不稳定。

我能想到的稳定方法是运行宁一个java输出不变的代码(只需在主函数中打印一个简单的字符串就可以做到这一点)。但是它需要我在项目的 rc 中打包一个 jar 文件并将其解压缩到临时文件夹并在 cmd 中 运行 。我觉得有点复杂。

所以我在这里寻求帮助,如果 JVM 启动,任何 java 命令都可以给我稳定的输出吗?

java -help怎么样?它的输出总是包含一个命令列表,其中肯定包含一个稳定的子集。

除此之外,一旦出现新的 JDK 版本,您仍然可以决定重新测试。恕我直言,输出中不太可能有更大的变化。这是 java 版本 1.6 的输出。0_45:

java version "1.6.0_45"

Java(TM) SE Runtime Environment (build

1.6.0_45-b06) Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode, sharing)

这里来自 java 版本 1.7。0_75:

java version "1.7.0_75"

Java(TM) SE Runtime Environment (build 1.7.0_75-b13)

Java HotSpot(TM) Client VM (build 24.75-b04, mixed mode, sharing)

这些看起来与 1.8.x 非常相似,除了版本号本身。