1

データをバイト配列として送信するデバイスとのBluetooth接続があります。バイト配列は、新しいString(byte []、offset、bytecount)を持つ文字列に変更されます。問題は、データが数百回と数百回受け取られ、ガベージコレクションは約1000回のループの後にメモリバイト割り当てエラーが発生するためです。ループが増加するにつれて、アプリはますます遅れをとっています。Android:多すぎるオブジェクト

私はより良いまだそれを使用するか、右後に新しい文字列オブジェクトのメモリを解放する方法はあり、新しいを作成せずに文字列あるいはフロートにバイト配列を変更する方法がありますオブジェクト?

エラーが発生したため、アプリにメモリを増やす方法がありますか?

+0

コード部分にループを付けることはできますか? – Yury

答えて

0

データをchar[]に読み込んで、より多くのデータを読み込むときにその配列を再利用すると、メモリフットプリントが非常に小さくなります。

また、このページをチェックアウトしてください。http://www.javamex.com/tutorials/memory/string_memory_usage.shtml

+0

バイト[]ではなくchar []を使用しますが、オフセットとバイト数はどうですか? char []がStringに関係していませんか? – user1233402

+0

byte []またはchar []を使用すると問題はないと思います。私は実際にInputStreamReaderを考えていました。これはchar []に出力できます:http://docs.oracle.com/javase/1.4.2/docs/api/java/io/InputStreamReader.html#read(char []、 %20int、%20int)。オフセットとバイト数を指定します。それはあなたが求めていることですか? – Macondo2Seattle

+0

私は正直なところ私の質問をする方法を知らない。私は有用な情報を得るためにStringsに変更する必要がある何百バイトものバイトを取得しています。新しいオブジェクトを作成せずにそれをやりたいのです。 InputStreamReaderをbyte []で入力し、offset(char []、offset、bytecount)でoffsetとbytecountを設定してchar []を取得しますか? – user1233402

関連する問題