2011-07-26 22 views
0
07-26 20:59:09.464: ERROR/dalvikvm-heap(5530): Out of memory on a 87396-byte allocation. 
07-26 20:59:09.512: INFO/dalvikvm(5530): "AsyncTask #1" prio=5 tid=9 RUNNABLE 
    07-26 20:59:09.512: INFO/dalvikvm(5530): | group="main" sCount=0 dsCount=0  obj=0x40510718 self=0x29ffc8 
    07-26 20:59:09.512: INFO/dalvikvm(5530): | sysTid=5542 nice=10 sched=0/0 cgrp=bg_non_interactive handle=2752768 
    07-26 20:59:09.561: INFO/dalvikvm(5530): | schedstat=(2745693669 7741199384 330) 

これは、私のasyncTaskでこのメソッドを実行しているときに発生するエラーです。バイト割り当てのメモリ不足エラー?

public void getImages() throws IOException{ 


    DefaultHttpClient httpclient = new DefaultHttpClient(); 

    HttpGet httppost = new HttpGet("https://sites.google.com/site/theitrangers/images/webImages.txt"); 
    HttpResponse response; 

     response = httpclient.execute(httppost); 


      HttpEntity ht = response.getEntity(); 

      BufferedHttpEntity buf = new BufferedHttpEntity(ht); 

      InputStream is = buf.getContent(); 


      BufferedReader r = new BufferedReader(new InputStreamReader(is)); 

      StringBuilder total = new StringBuilder(); 
      String line; 
      while ((line = r.readLine()) != null) { 
       total.append(line + "\n"); 


       Log.v("getImage1", "Retreived image"); 
      } 
      imageUrl = total.toString(); 
    } 
+0

割り当てが行われる前にddmsがヒープの状態について何を述べていますか?この配分はどのラインに関連していますか? –

+1

StringBuilderを使用している場合は、文字列に+オペランドを使用しないでください。 – Klaimmore

答えて

0

あなたのコード内のURL(https://sites.google.com/site/theitrangers/images/webImages.txt)61バイトの文字列https://sites.google.com/site/theitrangers/images/ncaa12.jpgに解決されます。だから、これはおそらくあなたのヒープの主な排水ではありません。あなたの記憶を使い果たす他のものがたくさんある可能性があります。そして、これはちょうど物事が終わるところで起こります。とにかく、BufferedReaderを割り当てると、OOMが起きているように見えます。バッファのサイズは、実際にはコンテンツのサイズ(前述の61バイトの文字列)よりも大きいです。より小さなバッファーをBufferedReader's constructorに指定することができます。あなたは61バイトエンティティのためのバッファをとにかく必要としません。同様に、おそらくBufferedHttpEntityを使う必要はありません。あなたはここで使用されているメモリをトリミングすることでさらに進歩することができますが、あなたはもっと多くのメモリを使ってあなたのアプリに他のものを持っています。

+0

bufferedReaderのサイズを変更するにはどうすればよいですか? –