您好,我在我的項目中使用MuPdf庫來查看文檔。問題是,當您在平板電腦上的11英寸活動中打開3-7份文檔時,我會發生內存溢出。加載新文檔時,對前一個文檔的所有引用都會被銷燬,但不會刪除內存中文檔的圖像。對象在10-12兆字節的內存映像中創建。 在平板電腦上7英寸的大小不會出現這個問題。MuPdf中的OutOfMemory
也許有人遇到這個問題?
您好,我在我的項目中使用MuPdf庫來查看文檔。問題是,當您在平板電腦上的11英寸活動中打開3-7份文檔時,我會發生內存溢出。加載新文檔時,對前一個文檔的所有引用都會被銷燬,但不會刪除內存中文檔的圖像。對象在10-12兆字節的內存映像中創建。 在平板電腦上7英寸的大小不會出現這個問題。MuPdf中的OutOfMemory
也許有人遇到這個問題?
裏面mupdf.c找到
「/ * 128 MB店低內存設備。必要時扭捏。* /」 和
變化的內存限制,並嘗試
我試着用512渲染速度比以前更快
您無法通過這種方式修復內存泄漏! – prageeth 2014-07-07 08:22:00
我添加了下面的代碼來強制垃圾收集器在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
}
編輯:崩潰後打開文件幾次
變化: /* 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。
您無法以這種方式修復內存泄漏。 – prageeth 2014-07-07 08:21:08
此問題是由PageView.java
public void releaseBitmaps() {
reinit();
mEntireBm.recycle();
mPatchBm.recycle();
mEntireBm = null;
mPatchBm = null;
}
這解決了OutOfMemoryError後約10 PDF打開後獲得。感謝你! – prageeth 2014-07-07 07:02:22
我也在尋找一個解決方案的
relaeseBitmaps()
方法對位圖調用recycle()
解決。當我在不同的頁面打開和關閉pdf活動時,我收到了一個outofmemory錯誤。如果mupdf以低質量渲染沒有問題,但是當它在HQ中渲染時(主要是在平板電腦10.1的全屏頁面上以縱向模式顯示),它會溢出 – markov00 2012-05-13 22:45:40mupdf嘗試從存儲庫更新,我有一個問題消失。 – alezhka 2012-05-14 08:43:14