命令行Java执行和终止

命令行Java执行和终止,java,command-line,scheduled-tasks,Java,Command Line,Scheduled Tasks,Java:1.6 操作系统:WinXP 我做了一个计划任务,启动了我创建的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 n

Java:1.6 操作系统:WinXP

我做了一个计划任务,启动了我创建的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吗?(测试很困难,因为im运行在实时数据集上,运行时会受到影响):

还是有更好的方法在每一部分之间消除java?我真的需要清除内存并重新启动java

还要注意的是,我已经给了Java尽可能多的内存

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


谢谢

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


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

谢谢您的回答,我担心的是它的设置是正确的,并且垃圾收集在每个部分之间运行,但机器只是在处理其中一个部分时出现问题。如果jvm进程真的结束了,那么jvm垃圾收集已经运行(或者实际上已经变得不相关),操作系统提供给JVM的内存已被完全回收。
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