私はいくつかの意思決定モジュールを通してファイルのバッチを処理するはずのJavaアプリケーションを実行しています。私は約50時間バッチを処理する必要があります。私が直面している問題は、プロセスが約1時間は正常に動作してからアイドル状態になることです。私はJVMを1時間実行してからシャットダウンし、30分後にJVMを再起動しますが、何らかの理由で2回目の実行にはほぼ4-5時間かかります。最初の試合が1時間で何をするかをする。助けや洞察力があれば大いに感謝します。jvm shutdown後もメモリが使用されています - どうすれば解放できますか?
私はこれを64ビットWindows r2サーバー、2つのIntelクアッドコアプロセッサー(2.53 GHz)、24 GB RAMで実行しています。 Javaバージョンは1.6.0_22(64ビット)で、アプリケーションに割り当てられるメモリは - ヒープ(16GB)とPermGen(2GB)です。
外部モジュールもjvmで動作していますが、シャットダウンしていますが、シャットダウン後もメモリに保持されているような気がします。私はjvmのRAM使用量を開始する前に1 GBです、それを終了した後、それは約3 GBに留まる傾向があります。そのメモリを強制的に解放するようにJAVAに依頼する方法はありますか?
私はそれがJVMメモリを解放することを扱うOSだと思う。 putを使ってファイルIOをチェックしましたか?大量のファイルを書き込むため、アイドル状態になるか遅くなることがあります。ハードディスクの容量に大きな変化はありますか?外部モジュールの意味は?ナイーブな図書館?あなたのアプリケーションでマルチスレッドを使用していますか?おそらくスレッドロック? – gigadot