0

Java:1.6 操作系统:Win XP

我在启动我创建的 java 程序的计划任务时遇到了问题。问题是程序使用了大量数据,导致程序在中途卡住。

我继续将程序分成不同的部分,这样它们就不必一次运行,但我不确定如何为计划任务构建我的 .cmd 文件。我需要它来运行每一块,在每一块之后,杀死 java / 运行垃圾收集,然后运行下一个任务。

原片:

java -jar CommandLine.jar -f p d pr d dr d e d qp d ea d pa d pb d as d ndp d g d sc d 2> ErrorLog\cmdErrorLog.txt

每个部分由 pd 或 pr d 表示。

那么这样的事情真的会阻止java吗?(测试很难,因为我在运行时生效的实时数据集上运行):

java -jar CommandLine.jar -f pr d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f dr d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f e d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f qp d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f ea d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f pa d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f pb d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f as d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f ndp d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f g d 2> ErrorLog\cmdErrorLog.txt
java -jar CommandLine.jar -f sc d 2> ErrorLog\cmdErrorLog.txt

或者有没有更好的方法来杀死每一块之间的java?我真的只需要清除内存并重新启动java。

另请注意,我已经在 J​​ava 运行的盒子上提供了尽可能多的内存。

任何帮助都将是洞察力或帮助将是巨大的。

谢谢!

4

1 回答 1

1

Java 的每次执行都代表一个新的、自包含的 JVM。因此,执行多次显然可以在下一个实例启动之前完全放弃所有内存。

如果您可以轻松修改 CommandLine 程序,那么更有效的方法是使用 Main 方法在同一进程中拆分工作。它基本上可以完全完成您对多个 JVM 执行所做的事情,但不必每次都停止/启动新的 JVM。这确实意味着需要正确编写程序以在每次迭代中放弃所有资源,以便垃圾收集器可以完成其工作。

于 2013-01-15T18:05:51.380 回答