1

私のプログラムには、約 1500x500 ピクセルのラスターがあります。各ピクセルは float で表されます。これは、1500x500x4(bytes) = 300 万バイトまたは 3mb という意味だと思います。これよりも大きくなる可能性があります。Java ガベージ コレクターは大きなオブジェクトを小さなオブジェクトとは異なる方法で処理しますか? 自動的に上位世代にスキップしますか?

4

1 に答える 1

5

大きなオブジェクトは、tenured スペースに直接配置できます。個々のオブジェクトのサイズが重要です。たとえば、float[1500][1500]それぞれ 1500*4 (およびオーバーヘッド) の 1500 オブジェクトです。

http://blog.dynatrace.com/2011/05/11/how-garbage-collection-differs-in-the-three-big-jvms/

これは、JRockit が大きなオブジェクトを保有空間に配置することを示唆していますが、HotSpot については何も述べていません。


これは、ラージ オブジェクトが直接保有空間に入るには、若い世代の空間よりも大きくなければならないことを示唆しています。

https://blogs.oracle.com/jonthecollector/entry/size_matters

于 2012-07-09T15:23:04.880 に答える