2011-12-09 11 views
3

私のアプリでは、3分ごとにデータが更新されます。アプリはこのちょっとエラーI'goカップルの時間のために働く場合:Android OutOfMemoryError(データを更新中)

java.lang.OutOfMemoryError 
at org.apache.http.util.CharArrayBuffer.<init>(CharArrayBuffer.java:55) 
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:131) 
at org.apache.http.util.EntityUtils.toString(EntityUtils.java:146) 
at com.tab.Api.friends(Api.java:99) 
at com.tab.TabLayout.updateFriends(TabLayout.java:692) 
at com.tab.TabLayout.access$25(TabLayout.java:690) 
at com.tab.TabLayout$7.run(TabLayout.java:684) 
at java.lang.Thread.run(Thread.java:1102) 

この中に私のコード中:「com.tab.Api.friendsで(Api.java:99)」場所は次のようになります。

String result = ""; 
    JSONObject jArray = null; 
    JSONArray friends = null; 

    DefaultHttpClient client = new DefaultHttpClient(); 
    try 
    { 
     HttpGet getFriends = new HttpGet("http://##########"+fb); 
     HttpResponse getResponseFriends = client.execute(getFriends); 
     HttpEntity getFriendsEntity = getResponseFriends.getEntity();      
     if (getFriendsEntity != null) 
      result= EntityUtils.toString(getFriendsEntity); 
     try 
     { 
      jArray = new JSONObject(result); 
     } 
     catch(JSONException e) 
     { 

     } 
    } 
    catch(Exception e) 
    { 
     Log.d("LOADING ERROR","Friends section"); 
    } 

答えて

3

あなたはどこかでメモリリークがあります。どこかに、長命のオブジェクトのメモリ集約型データへの参照が格納されています。これにより、GCはこれらのデータを収集することができません。すべてのメモリが使い尽くされるまで、実行中のアプリケーションはより多くのメモリを使用します。次に、アプリがあなたを助けるかもしれない

リンクのOutOfMemory例外で殺される:

0

メモリ割り当てを分析するためにMATツールを使用してください。 UIやその他の部分でメモリリークが発生している可能性があります。 私は、このエラーが発生したコードはエラーの原因ではなく、結果だけと考えています。 このチュートリアルでは、あなたを助けることができる:http://macgyverdev.blogspot.com/2011/11/android-track-down-memory-leaks.html

もう一つ - より良い例外をキャッチしますが、(などのIOExceptionのような)より具体的な何かをすることはありません。 Exceptionをキャッチすることで、ここでキャッチされていないもの(f.e. NullPointerException)を捕まえることができ、コードのどこかで問題が発生します。

0

私が思うに、Webサービスはによって保持されていない大量のデータを返しますあなたのモバイルRAM。

このタイプのWebサービスプロジェクトでは、同じ問題が発生しました。

制限されたデータを提供するWebサービスを作成してください。現在地記録から10km離れたところにあります。

関連する問題