Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

finallyを使わずにリソースを解放するには

”(安易に)finallyを使ってはいけない”というのは常識とかかれているサイトを見ました.

finally内でFileInputStreamのclose処理を行わせていたので,
あまりGCが実行されない状況下ではclose処理も実行されずに
メモリリークが発生しているという話でした.

ならば,どこでclose処理をするのが適切なのかを調べていたところ,
リソースの開放が必要なクラスには解放用のメソッドを用意すべきとの記述がありました.

そこで,具体的にはどういった構造・どういった名称のメソッドを作るのが一般的なのでしょうか.

2

回答

648

閲覧

2件の回答

評価

0

dispose()のことだろう。
これで調べられるな。

個人的には10年以上やって、問題になったことがない。

評価

20

finallyを使わずにリソースを解放するには
try-with-resourcesを使う

ただ、安易に使ってはならない事で有名なのはfinalize
GCが実行されない状況下では実行されないのもfinalize
今回質問者はfinalizeを使ってはいけないと書いたサイトを見て
finallyを使ってはならないと読み違えたか
見たサイトでfinalizeをfinallyと書き間違えていた可能性が高い

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。