Monday, July 29, 2013

[android-developers] Re: HttpClient GC_Concurrent freed

Here is the part of logcat when it force closes becourse of the memory.
And it is pointing at:
xml = EntityUtils.toString(httpEntity, "UTF-8");

07-30 05:30:58.179: D/dalvikvm(10021): GC_CONCURRENT freed 1191K, 5% free 30775K/32100K, paused 100ms+176ms, total 1294ms
07-30 05:30:58.179: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 601ms
07-30 05:31:05.857: I/dalvikvm-heap(10021): Clamp target GC heap from 32.854MB to 32.000MB
07-30 05:31:05.857: D/dalvikvm(10021): GC_CONCURRENT freed 1161K, 4% free 31468K/32764K, paused 100ms+112ms, total 1190ms
07-30 05:31:05.865: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 474ms
07-30 05:31:10.836: I/dalvikvm-heap(10021): Clamp target GC heap from 33.298MB to 32.000MB
07-30 05:31:10.845: D/dalvikvm(10021): GC_CONCURRENT freed 704K, 3% free 31922K/32764K, paused 123ms+109ms, total 1191ms
07-30 05:31:10.845: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 478ms
07-30 05:31:14.015: I/dalvikvm-heap(10021): Clamp target GC heap from 33.551MB to 32.000MB
07-30 05:31:14.015: D/dalvikvm(10021): GC_CONCURRENT freed 457K, 2% free 32182K/32768K, paused 4ms+109ms, total 992ms
07-30 05:31:14.015: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 584ms
07-30 05:31:16.425: I/dalvikvm-heap(10021): Clamp target GC heap from 33.723MB to 32.000MB
07-30 05:31:16.425: D/dalvikvm(10021): GC_CONCURRENT freed 280K, 2% free 32358K/32768K, paused 132ms+12ms, total 1066ms
07-30 05:31:16.435: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 422ms
07-30 05:31:18.505: I/dalvikvm-heap(10021): Clamp target GC heap from 33.883MB to 32.000MB
07-30 05:31:18.515: D/dalvikvm(10021): GC_CONCURRENT freed 114K, 1% free 32522K/32768K, paused 121ms+16ms, total 1201ms
07-30 05:31:18.515: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 500ms
07-30 05:31:19.335: I/dalvikvm-heap(10021): Clamp target GC heap from 33.867MB to 32.000MB
07-30 05:31:19.335: D/dalvikvm(10021): GC_CONCURRENT freed 58K, 1% free 32505K/32768K, paused 103ms+111ms, total 729ms
07-30 05:31:19.347: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 618ms
07-30 05:31:19.905: I/dalvikvm-heap(10021): Clamp target GC heap from 33.844MB to 32.000MB
07-30 05:31:19.905: D/dalvikvm(10021): GC_FOR_ALLOC freed 36K, 1% free 32482K/32768K, paused 554ms, total 555ms
07-30 05:31:21.115: I/dalvikvm-heap(10021): Clamp target GC heap from 33.933MB to 32.000MB
07-30 05:31:21.115: D/dalvikvm(10021): GC_CONCURRENT freed 62K, 1% free 32573K/32768K, paused 97ms+111ms, total 1190ms
07-30 05:31:21.115: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 530ms
07-30 05:31:21.855: I/dalvikvm-heap(10021): Clamp target GC heap from 33.951MB to 32.000MB
07-30 05:31:21.855: D/dalvikvm(10021): GC_CONCURRENT freed 41K, 1% free 32591K/32768K, paused 106ms+15ms, total 706ms
07-30 05:31:21.855: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 506ms
07-30 05:31:22.855: I/dalvikvm-heap(10021): Clamp target GC heap from 33.962MB to 32.000MB
07-30 05:31:22.855: D/dalvikvm(10021): GC_CONCURRENT freed 30K, 1% free 32603K/32768K, paused 72ms+108ms, total 963ms
07-30 05:31:22.865: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 591ms
07-30 05:31:23.795: I/dalvikvm-heap(10021): Clamp target GC heap from 33.975MB to 32.000MB
07-30 05:31:23.795: D/dalvikvm(10021): GC_CONCURRENT freed 9K, 1% free 32616K/32768K, paused 188ms+108ms, total 919ms
07-30 05:31:23.805: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 605ms
07-30 05:31:23.805: I/dalvikvm-heap(10021): Forcing collection of SoftReferences for 8208-byte allocation
07-30 05:31:24.435: I/dalvikvm-heap(10021): Clamp target GC heap from 33.963MB to 32.000MB
07-30 05:31:24.435: D/dalvikvm(10021): GC_BEFORE_OOM freed 14K, 1% free 32602K/32768K, paused 635ms, total 635ms
07-30 05:31:25.335: I/dalvikvm-heap(10021): Clamp target GC heap from 33.971MB to 32.000MB
07-30 05:31:25.335: D/dalvikvm(10021): GC_CONCURRENT freed <1K, 1% free 32610K/32768K, paused 78ms+134ms, total 899ms
07-30 05:31:25.345: D/dalvikvm(10021): WAIT_FOR_CONCURRENT_GC blocked 810ms
07-30 05:31:25.345: I/dalvikvm-heap(10021): Forcing collection of SoftReferences for 8208-byte allocation
07-30 05:31:25.965: I/dalvikvm-heap(10021): Clamp target GC heap from 33.970MB to 32.000MB
07-30 05:31:25.965: D/dalvikvm(10021): GC_BEFORE_OOM freed <1K, 1% free 32609K/32768K, paused 626ms, total 626ms
07-30 05:31:25.965: E/dalvikvm-heap(10021): Out of memory on a 8208-byte allocation.
07-30 05:31:25.975: I/dalvikvm(10021): "Thread-146" prio=5 tid=17 RUNNABLE
07-30 05:31:25.975: I/dalvikvm(10021):   | group="main" sCount=0 dsCount=0 obj=0x40dc52e8 self=0x2a2741e0
07-30 05:31:25.975: I/dalvikvm(10021):   | sysTid=10067 nice=0 sched=0/0 cgrp=apps handle=707210376
07-30 05:31:25.975: I/dalvikvm(10021):   | state=R schedstat=( 71547557653 165144938167 13457 ) utm=6837 stm=317 core=0
07-30 05:31:25.975: I/dalvikvm(10021):   at org.apache.http.util.CharArrayBuffer.<init>(CharArrayBuffer.java:~55)
07-30 05:31:25.975: I/dalvikvm(10021):   at org.apache.http.util.EntityUtils.toString(EntityUtils.java:131)
07-30 05:31:25.975: I/dalvikvm(10021):   at com.example.androidtablayout.StringActivity$4.run(StringActivity.java:323)
07-30 05:31:26.099: W/dalvikvm(10021): threadid=17: thread exiting with uncaught exception (group=0x40a71930)
07-30 05:31:26.105: E/AndroidRuntime(10021): FATAL EXCEPTION: Thread-146
07-30 05:31:26.105: E/AndroidRuntime(10021): java.lang.OutOfMemoryError
07-30 05:31:26.105: E/AndroidRuntime(10021): at org.apache.http.util.CharArrayBuffer.<init>(CharArrayBuffer.java:55)
07-30 05:31:26.105: E/AndroidRuntime(10021): at org.apache.http.util.EntityUtils.toString(EntityUtils.java:131)
07-30 05:31:26.105: E/AndroidRuntime(10021): at com.example.androidtablayout.StringActivity$4.run(StringActivity.java:323)


Den måndagen den 29:e juli 2013 kl. 08:22:12 UTC+2 skrev Kristoffer:
Hello.
Iam having trouble with memory leak it will finaly cause the app to force close.
I have stripped down my code just to find where the problem is and i located it to my httpclient.

When i run this code iam geting many GC_Concurrent freed.
if i add a Thread.sleep(1000); then i will ofcourse get less warnings but my guess is that there is still some problem with the code i run.
Is there a way i could prevent the problem.

Here is the code:

Thread c = new Thread() {
       @Override
public void run() {
                                String xml;
        UsernamePasswordCredentials creds = new UsernamePasswordCredentials("username", "password");
        HttpGet httpGet;
        HttpClient httpClient;
        HttpResponse httpResponse;
        HttpEntity httpEntity;
        while (RunThread) {

        try {
        httpClient = HttpClientFactory.getThreadSafeClient();
        httpGet = new HttpGet("http://ipaddress/list?format=xml");
        httpGet.addHeader(new BasicScheme().authenticate(creds, httpGet));
        httpResponse = httpClient.execute(httpGet);
        httpEntity = httpResponse.getEntity();
        xml = EntityUtils.toString(httpEntity, "UTF-8");
       
       
        } catch (Exception e) {
        e.printStackTrace();
       
       
            }
   };
   c.start();
   }

And here is the class HttpClientFactory

public class HttpClientFactory {

    private static DefaultHttpClient client;

    public synchronized static DefaultHttpClient getThreadSafeClient() {
  
        if (client != null)
            return client;
         
        client = new DefaultHttpClient();
        
        ClientConnectionManager mgr = client.getConnectionManager();
        
        HttpParams params = client.getParams();
        params.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
        client = new DefaultHttpClient(
        new ThreadSafeClientConnManager(params,
            mgr.getSchemeRegistry()), params);
  
        return client;
    } 
}


Have a made some huge mistage in the code that is causing this issue?

--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment