如何在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 非常相似,除了版本号本身。
听起来很奇怪的问题,但这是有原因的。
我正在努力使用 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 非常相似,除了版本号本身。