簡體   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