質問: y` を行うことができます。 また、 `javaのようなPOJOもあります。 awt.RenderingHints.Key` では、一意的に変更できない1つのインスタンスのデザインパターンを使用することがよくあります。 > > > > > このクラスのインスタンスは不変でユニークなので、より高価なequals()メソッドの代わりに==演算子を使って一致のテストを行うことができます。 > > > > > > > > 私はこのアプローチでスピードブーストを理解することができますが、 しかし、このデザインパターンは最終的にメモリリークを引き起こしませんか?
回答: はい、それはメモリの成長を引き起こす可能性があります(それが意図的な動作の場合はリークではありません)。それは、一意性契約がどのように指定されているかに依存します。たとえば、これらのオブジェクトの1つをディスクにシリアル化し、存在するスコープを終了してディスクから逆シリアル化すると、2つのうちの1つが発生します。つまり、同じオブジェクトを取得するか、別のオブジェクトを取得します。同じオブジェクトを取得した場合は、JVMの使用中に使用されるすべてのオブジェクトを保持する必要があり、メモリが増えます。別のオブジェクトを取得した場合は、そのオブジェクトが参照されている間だけオブジェクトが存在する必要があり、メモリが増えることはありません。