我有一个java应用程序正在使用子JVM来执行某些操作。子进程看起来像父进程一样,包括所有参数。
要确认父母,我验证了父ID及其始终原始的JVM。
应用程序作为普通的java进程运行,即不在任何服务器如apache,weblogic等中运行。 由于进程具有相同的args,因此两者都写入相同的日志文件,而打开的文件也相同。
这是以前没有出现的新行为。有人可以提供关于检查原因的线索
JVM版本: - OpenJDK运行时环境(IcedTea 2.5.6)(7u79-2.5.6-0ubuntu1.14.04.1) 操作系统:Ubuntu 14.04
答案 0 :(得分:0)
一种可能性是明确调用Runtime
exec
方法。
如下所示:
Process process = Runtime.getRuntime ().exec("java -jar myApp.jar");
这将创建主进程的新进程子进程。
这可以显式地完成(使用前面的代码)或者隐式调用一些外部库,例如根据某个配置文件启动一个新进程。
答案 1 :(得分:0)
我们通过Processbuilder调用tar,它在forkAndExec上挂起了。 Fork是成功的,所以可以看到java进程但不是exec。由于大量的磁盘操作,它在关闭系统调用时会挂起很长时间。