繁体   English   中英

Android Garbage Collector在AJAX请求中间释放内存

[英]Android Garbage Collector freeing memory in the middle of an AJAX request

我只是遇到了这个问题。 我的Android应用程序中有一个XWalkView( Crosswalk WebView)。 我在XWalkView内发出几个AJAX请求,问题是Java垃圾收集器在执行请求时正在释放内存。 因此,请求无法完成。

至于AJAX部分,我使用的是qwest ,这是一个使用Promise进行AJAX请求的简单库。

Java代码非常简单,我不认为这是问题所在:

webView = (XWalkView)findViewById(R.id.walk_view);
webView.setResourceClient(new MyAppWebViewClient(webView));
webView.setWillNotCacheDrawing(true);
webView.load("file:///android_asset/www/index.html", null);

我添加了willNotCacheDrawing来尝试释放更多的内存,以便请求可以完成,这没有太大帮助。

MyAppWebViewClient是的子类XWalkResourceClient ,它没有做那么多,只是触发不同的动作时加载PDF。 当我不使用自己的ResourceClient时,也会发生此问题。

HTML / JavaScript部分非常简单,下载量不超过0.5MB,请求如下:

qwest.get('my.server.com/api')
 .then(function(xhr, response) {
    // do work with response
    // to bad it never reaches this
 })
 .catch(function(xhr, response, e) {
    // I just get a timeout here,
    // there is no way the server is timing out,
    // it works perfectly on iOS, Web and any other platform
 });

我认为这与垃圾收集器有关,因为如果我查看内存监视器,这是在执行请求时发生的情况:

垃圾收集器在工作吗?

内存中的第一个“上升”是请求启动时,一旦内存使用量再次变得稳定,请求就失败了。 我认为突然下降是垃圾收集器释放了我刚刚为我的AJAX请求分配的内存。

我对Android开发非常陌生,尤其是在内存管理方面。 垃圾收集器不允许我分配超过7,76MB的RAM是否正常? 完整的应用似乎有点低。

你们有什么主意吗?

谢谢!

这不是真正的异常,很小但并不奇怪。 如果您需要有关单个进程可用堆内存的更多信息,请阅读Android进程的内存量Android下内存管理官方文档。 您将看到堆大小通常非常有限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM