我打算生一個孩子做一些工作。我想使用與父進程相同的命令行產生子進程。如何確定用於啓動當前jvm的命令?
例如,如果父開始像這樣:
#>/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程序和參數。我沒有在系統屬性中找到這些信息。
似乎在這裏得到解答:http://stackoverflow.com/questions/1518213/read-java -jvm-startup-parameters-eg-xmx – aioobe 2010-11-23 21:31:32
該信息絕對有用。雖然它不告訴我用來啓動jvm的命令(即/ usr/bin/java),但它爲我做了其他事情。當我使用/ usr/bin/java啓動程序時,它顯示了所有傳遞的參數。但是,當我開始使用/ usr/bin/jdb時,RuntimeMXBean顯示了-Xdebug和-Xrunjdwp的附加參數:transport = dt_socket,address = hostname.local:58481,suspend = y
所以我認爲jdb實際上啓動了normal jvm與額外的參數(這也是有道理的)。但是,瞭解整個命令仍然很好。 – TejasInstrument 2010-11-23 22:36:16