0

Java:1.6 OS: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またはprdで表されます。

では、このようなものは実際に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が実行されているボックスにできるだけ多くのメモリを割り当てていることにも注意してください。

どんな助けも洞察であるか、助けは素晴らしいでしょう。

ありがとう!

4

1 に答える 1

1

Javaの各実行は、新しい自己完結型のJVMを表します。したがって、複数回実行すると、次のインスタンスが開始される前にすべてのメモリを完全に放棄するように機能することは明らかです。

ただし、コマンドラインプログラムを簡単に変更できる場合は、Mainメソッドを使用して、同じプロセス内で作業を分割するのがより効率的なアプローチになります。基本的に、複数のJVM実行で行っていることを正確に実行できますが、毎回新しいJVMを停止/開始する必要はありません。これは、ガラベッジコレクターがその仕事を行えるように、各反復ですべてのリソースを放棄するようにプログラムを正しく作成する必要があることを意味します。

于 2013-01-15T18:05:51.380 に答える