44

このメソッドを使用すると、ファイルがクラスパスから読み取られるため、これが必要かどうか疑問に思っていました。「閉じない」とメモリリークが発生します。

このようなメモリリークをテストするにはどうすればよいですか?

4

3 に答える 3

8

経験則として、すべてのストリーム (およびクローズ機能を提供する他のタイプ) を閉じる必要があります。これにより、リソース リークが発生する可能性があります (メモリはリソースの一種です)。

オブジェクトが参照されなくなったときに最終的にメモリを再利用する自動ガベージ コレクションがありますが、解放されない可能性があるネイティブ リソースを保持している可能性があります。また、他の長寿命のオブジェクト (クラスローダなど) がリソースを保持している場合、ガベージ コレクタはそのリソースを要求しません。

プログラムの寿命が短い場合、または少数のリソースしか開いていない場合は、問題が発生しない可能性がありますが、実行時間の長いアプリケーションではリソース リークを検出するのが困難です。

于 2013-10-25T19:42:07.427 に答える