मेरे पास एक एंड्रॉइड एप्लिकेशन है जो को ByteArrayEntity
ऑब्जेक्ट का उपयोग करके एक इकाई के रूप में पोस्ट करता है। यह इस प्रकार से लगता है कि:HttpClient.execute फेंक आउट आउटफॉर्मरीर
post.setEntity(new ByteArrayEntity(entity.getBytes("UTF-8")));
result = client.execute(post, handler);
इकाई एक String
है। हैंडलर ResponseHandler<String>
है और ग्राहक HttpClient
है। यह एमुलेटर और कुछ उपकरणों पर अच्छी तरह से काम कर रहा है। लेकिन, कभी-कभी मुझे x10i
(जिसे XPERIA भी कहा जाता है) पर निष्पादित करते समय OutOfMemoryError प्राप्त हो रहा है।
यहाँ ढेर है:
java.lang.OutOfMemoryError
at org.apache.http.impl.io.AbstractSessionInputBuffer.init(AbstractSessionInputBuffer.java:79)
at org.apache.http.impl.io.SocketInputBuffer.<init>(SocketInputBuffer.java:93)
at org.apache.http.impl.SocketHttpClientConnection.createSessionInputBuffer(SocketHttpClientConnection.java:83)
at org.apache.http.impl.conn.DefaultClientConnection.createSessionInputBuffer(DefaultClientConnection.java:170)
at org.apache.http.impl.SocketHttpClientConnection.bind(SocketHttpClientConnection.java:106)
at org.apache.http.impl.conn.DefaultClientConnection.openCompleted(DefaultClientConnection.java:129)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:171)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:359)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:580)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:678)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:652)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at com.test.application.api.Request.post(Request.java:102)
at com.test.application.api.API.getResult(API.java:123)
at com.test.application.api.APITask.doInBackground(APITask.java:127)
at com.test.application.api.APITask.doInBackground(APITask.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
जैसा कि मैंने कहा, मैं सिर्फ एक स्ट्रिंग के रूप में एक JSONObject पोस्टिंग कर रहा हूँ। यह सबसे अधिक 200 चरित्र हो सकता है। क्या गलत है?
सर्वर से प्रतिक्रिया का आकार क्या है? –
यह लगभग 5-6 केबी है। –
उदाहरण के लिए इसी तरह की त्रुटियां हैं http://stackoverflow.com/questions/3055614/out-of-memory-error-my-apps-fault, लेकिन ऐसा लगता है कि सामान्य स्मृति उपयोग से संबंधित है, AbstractSessionInputBuffer से अलग नहीं है । –