Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在新流程中启动Java应用程序_Java_Process_Exec_Processbuilder - Fatal编程技术网

在新流程中启动Java应用程序

在新流程中启动Java应用程序,java,process,exec,processbuilder,Java,Process,Exec,Processbuilder,我有一个Java应用程序,我用ant myapp启动了它。现在,我希望该应用程序能够自我复制,即在新流程中启动新的实例 我知道应该使用Processbuilder或Runtime.exec来完成 如果我只是调用Processbuilder或Runtime.exec'antMyApp',它将启动一个新的JVM并在一个单独的进程中运行它。是这样吗 但我也听说可以在同一个JVM中的新进程中运行应用程序。我该怎么做 如果我没有新的JVM,那么消耗的内存就会更少。但是,如果新进程在同一个JVM中运行,那么

我有一个Java应用程序,我用ant myapp启动了它。现在,我希望该应用程序能够自我复制,即在新流程中启动新的实例

我知道应该使用Processbuilder或Runtime.exec来完成

如果我只是调用Processbuilder或Runtime.exec'antMyApp',它将启动一个新的JVM并在一个单独的进程中运行它。是这样吗

但我也听说可以在同一个JVM中的新进程中运行应用程序。我该怎么做

如果我没有新的JVM,那么消耗的内存就会更少。但是,如果新进程在同一个JVM中运行,那么缺点是什么呢?我在应用程序中有很多到服务器的套接字连接。因此,在不创建新JVM时,这可能是一个问题?

请查看ExecutorService。你可以把它们放在一起,设置超时等等


至于套接字、内存、CPU:你应该分析你的应用程序,以确保你适当地使用有限的资源。所有Java应用程序都是如此。你不能通过猜或问来知道答案。每种情况都不同。唯一知道的方法是通过分析获取一些数据。

ExecutorService用于在同一JVM中创建新进程?它们将作为新流程运行吗?如何进行分析?将其视为更好、更安全的线程。不,它们不会在操作系统上显示为PID。它们在单个JVM中运行。您可以使用分析工具进行分析,如VisualVM或dynaTrace my new fave。谢谢。你知道在运行Ubuntu的AmazonEC2实例上设置VisualVM或dynaTrace的一个简单的分步教程吗?不知道,这是你自己的。dynaTrace价格昂贵;不太可能在EC2上提供。visualvm与JVM捆绑在一起;看看是否可以在命令shell中运行它。