您好我在我的项目中使用MuPdf库来查看文档。问题是,当您在平板电脑上11英寸的活动中打开3-7个文档时,我会出现内存溢出。加载新文档时,将销毁对上一个文档的所有引用,但不会删除内存中文档的图像。在10-12兆字节的内存映像中创建对象。 在7英寸大小的平板电脑上,这个问题不会出现。
也许有人遇到过这个问题?
答案 0 :(得分:2)
通过在PageView.java的recycle()
方法中的位图上调用relaeseBitmaps()
来解决此问题
public void releaseBitmaps() {
reinit();
mEntireBm.recycle();
mPatchBm.recycle();
mEntireBm = null;
mPatchBm = null;
}
答案 1 :(得分:0)
在mupdf.c里面找
“/ * 128 MB存储用于低内存设备。根据需要调整。* /”和
更改内存限制并尝试
我尝试使用512渲染比之前更快
答案 2 :(得分: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
}
编辑:多次打开文件后崩溃
答案 3 :(得分:-1)
变化: / * 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。