teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2020/02/06 23:31

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,7 +1,7 @@
1
- メモリが解放される前にファイナライザが呼ばれます。このファイナライザはなるべく使わないようにします。しかし、例外もあります。
1
+ メモリが解放される前にファイナライザが呼ばれます。このファイナライザはなるべく使わないようにします。しかし、例外もあります。
2
2
 
3
3
  [MET12-J. ファイナライザは使わない](https://www.jpcert.or.jp/java-rules/met12-j.html)
4
4
 
5
5
  > ネイティブコードを使ったプログラムを作成する場合にはファイナライザを使用してもよい。その理由は、他の言語で書かれたコードによって使用されるメモリをガベージコレクションすることは出来ないからであり、オブジェクトの生存期間も分からないからである。
6
6
 
7
- ファイナライザが走る時にはそのオブジェクトはどこからも参照されていないはずなので、「どこからも参照されていないインスタンスの利用」にあたると思います。
7
+ ファイナライザが走る時にはそのオブジェクトは、弱参照がある場合を除いてどこからも参照されていないはずなので、弱参照が無い場合には「どこからも参照されていないインスタンスの利用」にあたると思います。