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
每个部分都由 p d 或 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。
另请注意,我已在 Java 运行时为 Java 提供了尽可能多的内存。
任何帮助都将是洞察力或帮助将是巨大的。
谢谢!
最佳答案
Java 的每次执行都代表一个新的、独立的 JVM。因此,多次执行显然会在下一个实例启动之前完全放弃所有内存。
如果您可以轻松修改 CommandLine 程序,那么更有效的方法是使用 Main 方法在同一进程中拆分工作。它基本上可以完全执行您在多个 JVM 执行中所做的事情,但不必每次都停止/启动新的 JVM。这确实意味着需要正确编写程序以在每次迭代中放弃所有资源,以便垃圾收集器可以完成其工作。
关于java - 命令行Java执行和杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343861/