Possible Duplicate:
Out of memory error when putting large JSON (InputStream) to String
I'm getting an encoded JSON String via an HttpResponse. Code looks like this:
BasicResponseHandler brh = new BasicResponseHandler();
String responseString = brh.handleResponse(response);
String decoded = new String(Base64.decode(responseString, Base64.NO_CLOSE));
I get an error like this:
09-03 12:57:09.664: E/AndroidRuntime(8309): FATAL EXCEPTION: Thread-272
09-03 12:57:09.664: E/AndroidRuntime(8309): java.lang.OutOfMemoryError
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.CharArrayBuffer.<init>(CharArrayBuffer.java:43)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.ReadWriteCharArrayBuffer.<init>(ReadWriteCharArrayBuffer.java:47)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.CharBuffer.allocate(CharBuffer.java:54)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.CharsetDecoder.allocateMore(CharsetDecoder.java:236)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:195)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.nio.charset.Charset.decode(Charset.java:487)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.lang.String.<init>(String.java:174)
09-03 12:57:09.664: E/AndroidRuntime(8309): at java.lang.String.<init>(String.java:141)
09-03 12:57:09.664: E/AndroidRuntime(8309): at xxx.DataManager.doPost(DataManager.java:448)
09-03 12:57:09.664: E/AndroidRuntime(8309): at xxx.DataManager.run(DataManager.java:185)
Sometimes I get it on
brh.handleResponse(response);
sometimes on
String decoded = new String(Base64.decode(responseString, Base64.NO_CLOSE));
So I take it the String is just too big to handle (I dont know how to determine it's size in bytes tbh), how can I work around this?