AbdFatah / analytics-issues

Automatically exported from code.google.com/p/analytics-issues
0 stars 0 forks source link

OutOfMemoryError on Android #153

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Name of affected component: Mobile Tracking

Name of related library, if applicable (e.g. Android, iOS, Snippets, etc.): 
Android

Issue summary:

There appears to be an OutOfMemoryError being thrown from the Analytics 
dispatcher.  It seems to be isolated to specific devices (LG Revolution in our 
case).  Stacktrace follows:

java.lang.OutOfMemoryError
    at org.apache.http.util.ByteArrayBuffer.(ByteArrayBuffer.java:53)
    at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:82)
    at org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:93)
    at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
    at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
    at org.apache.http.impl.DefaultHttpClientConnection.bind(DefaultHttpClientConnection.java:72)
    at com.google.android.apps.analytics.PipelinedRequester.maybeOpenConnection(Unknown Source)
    at com.google.android.apps.analytics.PipelinedRequester.addRequest(Unknown Source)
    at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.dispatchSomePendingHits(Unknown Source)
    at com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispatchTask.run(Unknown Source)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:123)
    at android.os.HandlerThread.run(HandlerThread.java:60)

Steps to reproduce issue:
We use the library exactly as described in the documentation.  This error is 
generated from within the Google Analytics Android library.

Expected output:
A successful dispatch.

Actual results:
The stacktrace above.

Notes:

According to this thread:
http://groups.google.com/group/android-developers/browse_thread/thread/77c719533
88f6ab1

It's related to the device allocating too large a default buffer from 
HttpConnectionParams, apparently on an HTC Thunderbolt (and the LG Revolution 
for us), it allocates 2MB rather than the standard 8K.  However, the buffer 
size can be specified explicitly rather than using the device default.

There is a fix outlined in this StackOverflow question:
http://stackoverflow.com/questions/5358014/android-httpclient-oom-on-4g-lte-htc-
thunderbolt

Original issue reported on code.google.com by julian.v...@gmail.com on 22 Sep 2011 at 9:29

GoogleCodeExporter commented 9 years ago
A forthcoming version of the SDK will fix this issue.

Original comment by nrho...@google.com on 19 Oct 2011 at 6:42

GoogleCodeExporter commented 9 years ago
Fixed in 1.4 SDK

Original comment by nrho...@google.com on 18 Nov 2011 at 10:55

GoogleCodeExporter commented 9 years ago
Actually, it isn't. I'm using the latest (1.4.2) and just got this report:

java.lang.OutOfMemoryError
at org.apache.http.util.ByteArrayBuffer.(ByteArrayBuffer.java:53)
at
org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuff
er.java:82)
at org.apache.http.impl.io.SocketInputBuffer.(SocketInputBuffer.java:93)
at
org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketH
ttpClientConnection.java:83)
at
org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.
java:106)
at
org.apache.http.impl.DefaultHttpClientConnection.bind(DefaultHttpClientConnectio
n.java:72)
at 
com.google.android.apps.analytics.NetworkDispatcher$DispatcherThread$AsyncDispat
chTask.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:144)
at android.os.HandlerThread.run(HandlerThread.java:60)

This happened on a HTC Desire (2.2).

Original comment by GoncaloS...@gmail.com on 1 Jun 2012 at 2:28