簡體   English   中英

MuPdf中的OutOfMemory

[英]OutOfMemory in MuPdf

您好我在我的項目中使用MuPdf庫來查看文檔。 問題是,當您在平板電腦上11英寸的活動中打開3-7個文檔時,我會出現內存溢出。 加載新文檔時,將銷毀對上一個文檔的所有引用,但不會刪除內存中文檔的圖像。 在10-12兆字節的內存映像中創建對象。 在平板電腦上大小為7英寸這個問題不會出現。

也許有人遇到過這個問題?

通過在PageView.java的relaeseBitmaps()方法中調用位圖上的recycle()來解決此問題

public void releaseBitmaps() {
        reinit();
        mEntireBm.recycle();
        mPatchBm.recycle();
        mEntireBm = null;
        mPatchBm = null;
    }

在mupdf.c里面找到

“/ * 128 MB存儲用於低內存設備。根據需要調整。* /”和

更改內存限制並嘗試

我嘗試用512渲染比以前更快

我添加了以下代碼來強制在PageView.java中使用垃圾收集器,到目前為止似乎工作正常。

if (mEntireBm == null || mEntireBm.getWidth() != newSize.x
                              || mEntireBm.getHeight() != newSize.y) {
            mEntireBm = Bitmap.createBitmap(mSize.x, mSize.y, Bitmap.Config.ARGB_8888);
            System.gc();//Added
            Runtime.getRuntime().gc();//Added
        }

編輯:打開文件幾次后崩潰

  1. 編輯mupdf.c

更改:/ * 128 MB存儲用於低內存設備。 根據需要調整。 * / glo-> ctx = ctx = fz_new_context(NULL,NULL,128 << 20); 至/ * 128 MB存儲,用於低內存設備。 根據需要調整。 * / glo-> ctx = ctx = fz_new_context(NULL,NULL,32 << 20);

這就是全部。 最大堆內存量~50Mb。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM