0

5M サイズの 3D OBJ モデルをロードするとメモリ不足になる。デバッグは、エミュレーターまたはデバイスのいずれかで、dalvik に 50M のメモリ制限があることを示しています。これがなぜなのかわかりません。

mIndicesInt = ByteBuffer.allocateDirect(indices.length * INT_SIZE_BYTES).order(ByteOrder.nativeOrder()).asIntBuffer();
mIndicesInt.put(indices).position(0);

AVD RAM を 2048M に増やし、ヒープを 1024M に増やしましたが、役に立ちません。常に同じ番号で停止します。

D/setIndices(2270): メモリ: Pss=67.88 MB、プライベート=66.09 MB、共有=13.30 MB D/setIndices(2270): maxMem=50331648 D/setIndices(2270): totalMem=50208736 D/setIndices(2270): freeMem=1963736

OBJ モデルには 20 を超えるオブジェクトが含まれています。いくつかのオブジェクトを削除すると、メモリ不足の問題がなくなりました。これは、プロセスごとのメモリのハード制限の問題ですか?

それを処理するための提案はありますか?また、RAM とヒープ サイズを増やすための AVD オプションが効果がないのはなぜですか?

4

1 に答える 1

0

5Mの頂点データは、モバイル環境では非常に多くなります。テクスチャもロードする場合は、圧縮されたテクスチャのみをロードすることを検討してください。GPUドライバーに移動した後、一部のリソースを解放することもできます。頂点データをオフラインで準備し、実行時に必要なデータのみをロードします。もう1つのオプションは、データの一部を計算するか、頂点/フラグメントシェーダーで直接展開することです(たとえば、GPU側でビタンジェントを生成します)。

于 2013-01-28T15:07:25.700 に答える