gpt4 book ai didi

java - Android 垃圾收集器在 AJAX 请求期间释放内存

转载 作者:行者123 更新时间:2023-12-01 10:51:07 25 4
gpt4 key购买 nike

我刚刚遇到了这个问题。我的 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 来尝试释放更多内存,以便请求能够完成,但这没有多大帮助。

MyAppWebViewClientXWalkResourceClient 的子类,它的作用并不大,只是在加载 PDF 时触发不同的 Action。当我不使用自己的 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
});

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

Garbage collector at work?

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

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

你们有什么想法吗?

谢谢!

最佳答案

这并不是什么异常,稍微小一点,但并不奇怪。如果您需要有关单个进程的可用堆内存的更多信息,您可以阅读 How much memory for Android processmemory management under Android 上的官方文档。您会发现堆大小通常非常有限。

关于java - Android 垃圾收集器在 AJAX 请求期间释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com