Android Java如何在循环执行网络请求时释放内存?

问题描述 投票:0回答:1

我在android项目上使用了volley,但无法获得有效的解决方案。

基本上,我有大量的东西要连续发送(通过带有volley lib的http)。当我发送10个时,这没问题,但是如果连续执行,最终将耗尽所有内存,并且由于占用的热量很大,该应用也被终止。

下面是演示代码块

requestqueue = Common.getQueue();//it will get a normal requestqueue
for (int i = 0; i < waitinglist.size(); i++) {
    synccopyreq.filedatas.add(Common.getDataFromWaitinglist(i));
    Common.httpPostWithQueue( requestqueue,"tagfullcopy", httpEndPoint+"/sync/fullcopy", gson.toJson(synccopyreq), that, new Common.CallbackInterface() {
        @Override
        public void completed(String result)
        {
            Log.i("shawhu","ok done");
        }
    });
}

[请阅读,我已经尝试了探查器,当整个过程完成时(例如处理10个项目时),内存使用情况会下降,但是如果我连续运行它,则不会。内存使用量持续上升,最终将破坏应用程序(由android系统终止)。如何在循环的每次迭代中释放内存?

请帮助我,谢谢!

android memory-leaks android-volley request-queueing
1个回答
0
投票

没有确定的方法以拥有自己的GC的语言手动释放内存。

但是,您可以使用GC在Java中请求System.gc()调用。

请参阅:https://www.geeksforgeeks.org/garbage-collection-java/

注意:虽然我们可以随时随地调用此方法,但仍不能保证垃圾回收会立即运行。

尽管我不建议您像这样严重使用GC

© www.soinside.com 2019 - 2024. All rights reserved.