“Runtime.getRuntime()。exec()”的性能不佳吗?
我想从我自己的Java应用程序执行一个jar。 (不可能将这个jar导入到一个库中,然后启动该应用程序作为我自己的“启动器”的一个实例)。从我自己的Java应用程序执行jar ...我使用的是下一行:“Runtime.getRuntime()。exec()”的性能不佳吗?
String [] cmd = new String [] {"java","-jar","myjar.jar"}; Process process = Runtime.getRuntime().exec(cmd, null, null);
这完美的作品。我没有抱怨这件事。
我的问题是这样的:它是否具有与在命令行中通过“java -jar myjar.jar”执行该jar相同的性能?还是更糟?如果更糟......我可以用同样的表现来做这件事吗?
回答:
表现本质上是一样的,因为在这两种情况下基本上都是相同的事情。例如,在UNIX/Linux平台上:
- 当前进程为'分叉'。
- 新的子进程'exec''java'命令,传递指定的命令行参数。
- 孩子JVM启动...
有可能是继发的性能差异。例如,以孩子的标准输入/输出/错误流得到父母处理的方式可能会有所不同。但通常你可以忘记这种事情。
[作为@Amadan音符,用一个类加载器来启动在目前的JVM的Java应用程序是有效的多...因为它避免了JVM启动,公共代码的JIT编译等,但主要的开销缺点(除简单性外)是没有有效的方法让“父”应用程序控制在同一个JVM中运行的“子”应用程序。如果孩子被困在一个循环中,或者资源管理通常是sl,不乐,父母也会受到影响。]
回答:
这是相同。
执行一个进程正在执行一个进程,无论命令处理器执行了它还是您的应用程序。
回答:
通过这种方式它是相同的。使用新的api ProcessBuilder,它有更好的方式来指定参数..
以上是 “Runtime.getRuntime()。exec()”的性能不佳吗? 的全部内容, 来源链接: utcz.com/qa/259971.html