Ich plane, ein Kind zu spawnen, um etwas Arbeit zu erledigen. Ich möchte das Kind mit der gleichen Befehlszeile wie den übergeordneten Prozess erstellen.Wie kann ich den Befehl zum Starten des aktuellen jvm ermitteln?
Zum Beispiel, wenn die Eltern wie so gestartet wurde:
#>/usr/bin/java ParentProgram
dann würde ich rufen
Runtime.exec("/usr/bin/java ChildProgram");
Beispiel 2:
#>/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ParentProgram
dann würde ich rufen
Runtime.exec("/usr/bin/jdb -cp ./:/home/name/tool/library.jar -Xmx4G ChildProgram");
Ich weiß, dass ich den Klassenpfad aus den Systemeigenschaften finden kann. Und anstatt Runtime.exec zu verwenden, plane ich, ProcessBuilder zu verwenden, der die Umgebung des Elternteils in die Umgebung des Kindes kopiert. Aber im Grunde möchte ich das gleiche Java-Programm und die gleichen Argumente wie die Eltern verwenden. Ich habe diese Information in den Systemeigenschaften nicht gefunden.
scheint hier beantwortet werden: http://stackoverflow.com/questions/1518213/read-java -jvm-Startup-Parameter-zB-xmx – aioobe
Diese Info ist definitiv nützlich. Obwohl es mir den Befehl zum Starten des jvm (dh/usr/bin/java) nicht sagt, macht es etwas anderes für mich. Wenn ich das Programm mit/usr/bin/java starte, werden alle übergebenen Argumente angezeigt. Wenn ich jedoch/usr/bin/jdb benutze, zeigt RuntimeMXBean die zusätzlichen Argumente -Xdebug und -Xrunjdwp an: transport = dt_socket, Adresse = hostname.local: 58481, suspend = y
Also ich denke, jdb startet eigentlich das normale jvm mit den zusätzlichen Argumenten (was auch Sinn macht). Aber es wäre trotzdem nett, den gesamten Befehl zu kennen. – TejasInstrument