0

いくつかの値を含むfloatのarraylistのarraylistと整数のさらに3つのarraylistがあります

floatのarraylistのarraylistの場合、行数は47、列数は44300です。したがって、これらすべてのarraylistを含むオブジェクトをオブジェクトにシリアル化しようとすると、ヒープオーバーフローエラーが発生します。

arraylistのarraylistを使用したのは、関数呼び出しの前に列の数が事前に決定されていないため、動的である必要があるためです。このarraylistのarraylistが問題を引き起こしていると思います。

より少ないメモリで動的2Dアレイをより適切に実装する方法はありますか?

助けてくれてありがとう

4

1 に答える 1

4
8(float size) * 47* 44300 = 16656800 bytes-->16 MB

ここで、さらに3つの整数のArrayListを検討すると

4(int size) * 47* 44300 = 8328400 bytes-->8 MB * 3-->24 MB

私の意見は、ヒープスペースがどれくらいかを確認して増やすことです。コレクションを配列に変更することは、実際にはマイクロベンチマークになります。

-Xms<size>        set initial Java heap size
-Xmx<size>        set maximum Java heap size

java -Xms256m -Xmx512m
于 2012-10-14T04:10:25.523 に答える