java - 命令行Java执行和杀死

标签 java command-line scheduled-tasks

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/

相关文章:

javac -cp : cannot find symbol

Python每天定时运行一段代码

Java Timer vs ExecutorService?

java - if语句中的值不返回,只返回else语句(不能在主类中运行)

java - 刷新后看不到 Hibernate session 外的变化

mysql - 通过 Linux 命令行连接到 SphinxQL

windows - XCOPY 是通过 Windows 文件系统复制文件夹/文件的最快工具吗?

powershell - 是否可以使用 powershell 查询所有返回任何上次运行结果不是 (0x0) 的作业的计划任务?

java - 迭代字符串。搜索特殊字符。使用正则表达式

java - 在通常不呈现为标记的组件上设置的标记 id