如何确定用于启动当前jvm的命令?

时间:2010-11-23 21:27:10

标签: java runtime.exec

我打算催生一个孩子去做一些工作。我想使用与父进程相同的命令行生成子进程。

例如,如果父母是这样开始的话:

#>/usr/bin/java ParentProgram
然后我会打电话给

Runtime.exec("/usr/bin/java ChildProgram");

示例2:

#>/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ParentProgram
然后我会打电话给

Runtime.exec("/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ChildProgram");

我知道我可以从系统属性中找到类路径。而不是使用Runtime.exec我计划使用ProcessBuilder,它将父项的环境复制到子环境。但基本上我想使用与父获取相同的java程序和参数。我没有在系统属性中找到此信息。

2 个答案:

答案 0 :(得分:1)

您可以使用JMX:

List<String> args = ManagementFactory.getRuntimeMXBean().getInputArguments();

答案 1 :(得分:-1)

使用JDK 6,有一个名为jinfo的命令可以帮助您识别提供的参数

你只需要你的进程ID,并且要知道,你可以使用jps命令,它将显示所有正在运行的jvm进程和id。

因此,使用以下命令,您可以通过所有命令行。使用相同的命令,你可以动态地改变一些属性(只看jinfo -h)

  

jinfo