我从Parse数据库中获取登录用户的喜欢。但是,当我执行查询时,我得到一个OutOfMemoryError:
java.lang.OutOfMemoryError: Failed to allocate a 78089518 byte allocation with 16777216 free bytes and 26MB until OOM
at java.lang.String.<init>(String.java:332)
at java.lang.String.<init>(String.java:149)
at java.lang.String.<init>(String.java:119)
at com.parse.ParseRESTCommand.onResponse(ParseRESTCommand.java:176)
at com.parse.ParseRequest$3.then(ParseRequest.java:229)
at com.parse.ParseRequest$3.then(ParseRequest.java:225)
at bolts.Task$14.run(Task.java:796)
at bolts.BoltsExecutors$ImmediateExecutor.execute(BoltsExecutors.java:105)
at bolts.Task.completeAfterTask(Task.java:787)
at bolts.Task.continueWithTask(Task.java:599)
at bolts.Task.continueWithTask(Task.java:610)
at bolts.Task$12.then(Task.java:702)
at bolts.Task$12.then(Task.java:690)
at bolts.Task$14.run(Task.java:796)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
我正在做的查询如下:
ParseQuery<Like> query = ParseQuery.getQuery(Like.class);
query.include("user");
query.setLimit(1000);
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.addDescendingOrder("createdAt");
需要注意的是,如果我将此限制为100就可以了。如果限制超过600,它似乎会抛出错误。另外需要注意的是,我做了类似的调用,从Parse中取出1000个项目,完全没有问题。它似乎与这个确切的查询有关。
有没有其他人遇到过类似的问题?
答案 0 :(得分:1)
query.include(&#34; user.Id&#34); query.include(&#34; user.avatar&#34);
答案 1 :(得分:0)
您可能正在加载对象的所有字段,可能是带有图像的BLOB字段?
您应该指定从DB查询时需要使用的字段。