如果我使用下面的脚本
,假设我有一个Java程序Test.class
for i in 1..10
do
java Test
done
每次调用java Test
时JVM都会退出。
我想要的是多次运行java Test
而不退出JVM,因此,先前运行中的优化方法可以在以后的运行中使用,并可能进一步优化。
答案 0 :(得分:4)
为什么不编写一个重复调用要运行的程序入口点的Java程序?
答案 1 :(得分:3)
运行一次
java Run
主程序多次呼叫您的Test
课程。
class Run {
public static void main(String[] args) {
for(int i=0; i<10; i++){
Test.main(args);
}
}
}
答案 2 :(得分:2)
public class RunTest
{
public static void main(String[] args)
{
for(int i=1; i<=10; i++)
Test.main(args);
}
}
这应该这样做。您可以使用传递给main函数的相同参数调用Test类的main函数。这是另一张海报提到的“包装纸”。
答案 3 :(得分:1)
使用这样的代码:
public static void main2(String args[]){ // change main to main2
for(int i=0;i<10;i++)main(args);
}
public static void main(String args[]){ // REAL main
//...
}
答案 4 :(得分:0)
Perhas ProcessBuilder
会合适吗?例如,
String[] cmd = {"path/to/java", "test"};
ProcessBuilder proc = new ProcessBuilder(cmd);
Process process = proc.start();
答案 5 :(得分:0)
您要做的是将循环放在Test
类中,或者将要作为参数循环的次数传递给main()
内的Test
。
注意:强>
如果您正在查看 JIT 优化,则需要超过10次迭代才能启动。
答案 6 :(得分:0)
与前面的示例相同,但使用命令行参数
public class Test {
public static void main(String[] args) {
if ( args.length > 0) {
final Integer n = Integer.valueOf(args[0]);
System.out.println("Running test " + n);
if ( n > 1 ) {
main(new String[] { Integer.toString(n-1) });
}
}
}
}
使用args指示运行次数
$ java Test 10