2016-07-09 6 views
0

allocateメソッドを使用しており、ヒープメモリ不足エラーが返されました。このバッファは、私の内部ストレージからオーディオファイルを読み込み、それをデコードするために使用されました。私はこの問題に直面したカッターでオーディオプレーヤーを使用しています。ヒープメモリ不足E/dalvikvm-heap:メモリが383385715バイトの割り当てにあります

+4

365メガバイトの割り当ては非常に多くあります。メーカーによっては、通常、1つのアプリケーションでそれほど多くのメモリを使用することはありません。一度に多くのことを本当に必要としますか? –

答えて

0

は読まないでください全体(特に)メモリ一度に提出します。

あなたはオーディオファイルの一部をカットしています。

ファイルの中央部分、または知っている特定の場所を読み込む必要がある場合は、RandomAccessFileを使用します。または、ファイルの先頭からバイト単位で読み込みますが、不要な情報はプログラムメモリに格納しないでください。たとえファイルの一部にインデックスを付ける必要がある場合は、これらのオフセットをファイルに保存しますが、ファイルの残りのデータは保存しないでください。

あなたが別のファイル/ストリームにファイルの一部をコピーしたい場合は実際には、RandomAccessFile

writeShortのように、あなたはByteBufferから使用することがほとんどの機能が含まれているreadShort、ラップ別のOutputStreamを使用し、バイトをより小さな部分にコピーします。例えば

、あなたは-32768〜32767、65536 short sのファイルを書き込みたい場合:

RandomAccessFile file = new RandomAccessFile(filename, "rw"); 
for(short s = Short.MIN_VALUE; s <= Short.MAX_VALUE; s++){ 
    file.writeShort(s); 
} 
file.close(); 
関連する問題