1. ホーム
  2. Java

java にリソースリークがある: 'XXX' は決して閉じられない ソリューション

2022-02-14 03:45:08

まず、インターネット上に同様のブログがありますが、以下はBaiduの内容です。

ジャワ 上のコードのような簡単なプログラムを書く過程で、ちょっとしたヒントになることがあります。これは短い小さなプログラムで、どうせすぐにプログラムが終了してしまうので、閉じなくても問題はない。つまり、単なるWARNINGで、プログラムの実行には影響しないのです。しかし、時間内にリソースを閉じるのは良い習慣です。 

修正後

1. 最後に数点

発見する finally文はtry/catch文でのみ使用可能で、この文が常に最終的に実行されることを示す文のブロックが付属しています。 .

<スパン <スパン プログラムが例外のためにアボートするか、さもなければ終了するために戻るかは 最終的に ブロックの内容は必ず実行されます

2. 解決方法

try文を使わずに自分で書くので、finallyの中に入れるのではなく、その直後にXXX.close();という文を追加するだけです。XXXはScannerオブジェクトを定義している変数名です。

このステートメントを追加することで、警告が表示されなくなります。

<スパン 3. 理由

SCという名前のデータ入力スキャナ(Scanner)を宣言することで、コンフィギュレーションメモリを取得し

しかし、そのメモリを閉じたり解放したりすることなく終了してしまい、警告が表示されます。そこで、mian関数はXXX.close();で終了し、データストリームを終了してメモリを解放しています。