• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

“Runtime.getRuntime()。exec()”的性能不佳吗?

java 来源:testk 3次浏览

我想从我自己的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,不乐,父母也会受到影响。]


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)