Volley OutOfMemoryError

2019-05-03 17:21发布

We're getting an OutOfMemory error inside the Volley library while parsing the network response. This occurs with a large responses on crappy phones. Can this be avoided? Is there any way to tell Volley to parse the response in batches maybe?

Here's the exception:

07-18 14:33:41.449    6130-6154/com.tinder E/AndroidRuntime: FATAL EXCEPTION: Thread-22
    java.lang.OutOfMemoryError
    at java.lang.String.<init>(String.java:325)
    at java.lang.String.<init>(String.java:276)
    at com.android.volley.toolbox.JsonObjectRequest.parseNetworkResponse(JsonObjectRequest.java:66)
    at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:116)

This occurs on the Droid X (2.3.4).

2条回答
女痞
2楼-- · 2019-05-03 18:07

So, in order to solve this, I switched to using a generic HttpConnection and JsonReader to parse the input stream. Hopefully, somebody will add to Volley and enable it to return a JsonReader ... maybe it will be me ... in my copious spare time ...

查看更多
冷血范
3楼-- · 2019-05-03 18:19

The only time I saw OutOfMemoryErrors in Volley was when I had an OS 2.3 specific memory leak in my code. If you can reliably reproduce this error (e.g. in an automated test with test data) then you should probably raise an issue in the Google Android forum.

In case it might help others, I copied the Volley source into my own Github repository and made a small change so that OutOfMemoryErrors are handled as VolleyErrors. This makes it slightly cleaner to log/handle low memory conditions.

Here's the specific commit:
https://github.com/daj/volley/commit/c9e28fceda34074dda3734561502a20a28167ca9

查看更多
登录 后发表回答