3

您好,我在我的项目中使用 MuPdf 库来查看文档。问题是,当您在平板电脑上的 11 英寸活动中打开 3-7 个文档时,我会出现内存溢出。当您加载一个新文档时,对前一个文档的所有引用都将被销毁,但不会从内存中删除该文档的图像。对象在 10-12 兆字节的内存映像中创建。在 7 英寸大小的平板电脑上不会出现此问题。

也许有人遇到过这个问题?

4

4 回答 4

2

通过在PageView.javarecycle()的方法中调用位图解决了这个问题relaeseBitmaps()

public void releaseBitmaps() {
        reinit();
        mEntireBm.recycle();
        mPatchBm.recycle();
        mEntireBm = null;
        mPatchBm = null;
    }
于 2014-02-28T06:24:51.203 回答
0

在 mupdf.c 里面找到

“/* 128 MB 存储用于低内存设备。根据需要进行调整。*/”和

更改内存限制并尝试

我尝试使用 512 渲染比以前更快

于 2012-06-05T05:59:24.897 回答
0

我添加了以下代码来强制 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
        }

编辑:多次打开文件后崩溃

于 2012-07-31T08:52:05.400 回答
-1
  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。

于 2013-08-07T00:53:15.207 回答