回答編集履歴

2

ちょっと文言修正

2020/02/09 03:54

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -174,4 +174,4 @@
174
174
 
175
175
 
176
176
 
177
- Java同等の機能を見つけようとしたのですが、普通のAPIにはないようです。"java.bsae/jdk.internal"にあるものも一通り見てみましたが、なさそうでした。もしどうしてもしたいなら、C等でnative実装するしかないと思います。(オブジェクトのID取得に使われる`System#identityHashCode(Object)`も直接native実装で、内部APIを使っているわけではなかったです。ただ、これはHashCode用にカスタマイズされていると思われるため、単純にメモリ番地を取ってきているとかではないかも知れません。)場合によっては、JVMのコードを書き換える必要もあるかも知れませんが、幸い、OpenJDKならオープンソースで、誰でも自由に閲覧して改変して(ライセンスに従って)配付できますので、IDでオブジェクト再利用が可能なオリジナルOpenJDKを作ってくれることを楽しみに待っています(私は作りませんし、使いませんが)。
177
+ Java同等の機能を見つけようとしたのですが、普通のAPIにはないようです。"java.bsae/jdk.internal"(内部用のAPI、通常は隠しなっていて、ドキュメントもない)にあるものも一通り見てみましたが、なさそうでした。もしどうしてもしたいなら、C等でnative実装するしかないと思います。(オブジェクトのID取得に使われる`System#identityHashCode(Object)`も直接native実装で、内部APIを使っているわけではなかったです。ただ、これはHashCode用にカスタマイズされていると思われるため、単純にメモリ番地を取ってきているとかではないかも知れません。)場合によっては、JVMのコードを書き換える必要もあるかも知れませんが、幸い、OpenJDKならオープンソースで、誰でも自由に閲覧して改変して(ライセンスに従って)配付できますので、IDでオブジェクト再利用が可能なオリジナルOpenJDKを作ってくれることを楽しみに待っています(私は作りませんし、使いませんが)。

1

過去形

2020/02/09 03:54

投稿

raccy
raccy

スコア21735

test CHANGED
@@ -1,4 +1,4 @@
1
- ファイナライザでthisを別の所に参照させた場合、何処にも参照されていな状態でも、GC回収のタイミングで参照が作られせて、再利用できるようにすることはできるようです。(ただし、`finalize()`はJava 9からdeprecatedですので、使用しない方が良いです。)
1
+ ファイナライザでthisを別の所に参照させた場合、何処にも参照されて**いなかった**状態でも、GC回収のタイミングで参照が作られせて、再利用できるようにすることはできるようです。(ただし、`finalize()`はJava 9からdeprecatedですので、使用しない方が良いです。)
2
2
 
3
3
 
4
4