![](/img/trans.png)
[英]Garbage Collector not freeing "trash memory" as it should in an Android application
[英]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.