0

次のような機能を持つアプリケーションのoutofMemoryを修正しようとしています。

   public byte[] processByteArray (int bits) throws OutofMemoryError {
   byte [] arr =new byte [bits];
   //do something and 
   return arr;
 }

ユーザーが値ビットに何を提供するかわからないため、例外Dalvikが発生し、536870812バイトの割り当てが67108864バイトの最大ヒープサイズを超えていると表示されます。

だから、私は良くないこのようなことをしましたが、今のところ問題を修正します:

クラスで個人的にarrを宣言し、次のようにその内部関数にアクセスします。

       public byte[] processByteArray (int bits) throws OutofMemoryError {
   if(bits<=67108864) {
      byte [] arr =new byte [bits]; //tell me if this is right..!
      }
   //do something and 
   return arr;
 }

この問題を他にどのように修正できるかわかりません。関数で使用できる最大制限バイト[]arrを知りたいのですが、つまり、新しいバイト[ビット]のパラメーター「ビット」制限を知りたいのです。。私を教育してください..どんな提案でもいただければ幸いです。ありがとうございました。

4

1 に答える 1

1

getMemoryClass()マジックナンバーを割り当てる代わりに、制限を見つけるために使用する必要があります。

于 2012-07-18T21:08:31.247 に答える