0

最新の JVM は、ガベージ コレクション中にメモリ内のオブジェクトを再配置することがありますSystem.identityHashCode(object)が、オブジェクトの存続期間中は の値が同じままです。私が理解していないのは、JVM がメモリ内のオブジェクトを再配置する理由です。

4

2 に答える 2

3

メモリが断片化された場合 (つまり、その間のビットやピースが削除された場合)、デフラグを行うことでメモリ アクセス速度を向上させることができます。さらに、それを最適化すると、大きなオブジェクトの場合、メモリのより大きな海峡が開かれます。

明確にするために編集: この回答の下のコメントに投稿されているように、ガベージ コレクション アルゴリズムは通常、メモリの「ゾーン」を維持します。長持ちするものもあれば、そうでないものもあります。アルゴリズムは JVM によって異なりますが、通常、ゾーンがすでにほとんど空になっている場合、ゾーンを完全に空にするために、あるゾーンから別のゾーンにオブジェクトを移動することが含まれます。その後、そのゾーン全体を使用可能にすることができます。また、JVM は、存続するオブジェクトと存続しないオブジェクトを非常に巧妙に検出しますが、場合によっては、その戦略を適応させてオブジェクトを再配置する必要があります。

于 2013-08-31T17:10:28.090 に答える