0

mysqlデータベースを解析して値を割り当てるJavaプログラムを作成しました。データベース内の特定のテーブルでこのプログラムを初めて実行したときは、正常に実行され、完了しました。さまざまなテーブルで何度も実行しようとしましたが、ヒープスペースが不足し続けています。とにかくヒープスペースが減少しているということはありますか?プログラムが以前よりもはるかに短い時間実行されているように感じます。このプログラムのファイルは、初めて実行されたときよりも大きくはありません。

4

2 に答える 2

0

これは、プログラムでメモリリークが発生している可能性があることを意味します。ロードしたオブジェクトの一部はGCされていないため、新しいオブジェクトに使用できるヒープスペースが減少します。

静的参照がない可能性があります(または)DB接続が閉じられていないため、コードを見ずに推測するのは困難です。

于 2013-01-03T16:11:38.413 に答える
0

メモリリークがある場合、空き領域の量が減少する可能性があります。最大ヒープスペースは固定されており、プログラムの開始後に変更することはできません(自動的に変更されることもありません)。

VisualVM(またはYourKitなどの別のメモリプロファイラー)を使用して、アプリケーションが同じ量のメモリを使用している理由を特定することをお勧めします。

JDBCを使用する際のよくある間違いは、リソースを閉じないことです。残念ながら、これを行わない限り、使用するメモリは自動的にクリーンアップされません。

于 2013-01-03T16:12:27.377 に答える