Javascript 为什么将页面呈现为pdf.js时会出现内存泄漏?
我使用pdf.js呈现存储在服务器上的页面,从每个页面接收数据。但如果使用循环加载180页Ajax请求,则会消耗500 MB内存。特别是,它们使用数学公式和图形占据渲染页面。一个现成的预构建版本总是消耗大约100-200MB的内存。为什么会这样 下面是页面呈现方法。获取文件并呈现单个页面,因为每个文件都被划分为Pdf文件Javascript 为什么将页面呈现为pdf.js时会出现内存泄漏?,javascript,promise,pdfjs,Javascript,Promise,Pdfjs,我使用pdf.js呈现存储在服务器上的页面,从每个页面接收数据。但如果使用循环加载180页Ajax请求,则会消耗500 MB内存。特别是,它们使用数学公式和图形占据渲染页面。一个现成的预构建版本总是消耗大约100-200MB的内存。为什么会这样 下面是页面呈现方法。获取文件并呈现单个页面,因为每个文件都被划分为Pdf文件 PDFJS.getDocument({ data: atob(pageData) }).then(function(pdf) { pdf.getPage(1).
PDFJS.getDocument({
data: atob(pageData)
}).then(function(pdf) {
pdf.getPage(1).then(function(page) {
var canvas = document.getElementById('page-' + pageNum);
var context = canvas.getContext('2d');
var viewport = page.getViewport(settings.scale);
canvas.height = viewport.height;
canvas.width = viewport.width;
var canvasP = document.getElementById('preview-page-' + pageNum);
var contextP = canvasP.getContext('2d');
var viewportP = page.getViewport(settings.previewScale);
canvasP.height = viewportP.height;
canvasP.width = viewportP.width;
page.render({
canvasContext: context,
viewport: viewport
}).then(function() {
pdf.cleanup();
pdf.destroy();
page.cleanup();
render.pagesStatus[pageNum] = pageRenderStatus.S;
});
});
}, function (reason) {
render.pagesStatus[pageNum] = pageRenderStatus.E;
console.error(reason);
});
Chrome的V8不会立即触发垃圾收集。它通常会等到开始达到最大堆限制后再这样做。我并不是说PDF.js没有问题,但您也应该知道,如果不分析它,很难知道这是否真的是一个问题代码>但是你很可能想做一个赋值而不是比较。t.niese,是的,我被封在这里,但它不会影响内存泄漏。你找到它泄漏的原因了吗?它是否来自pdfjs库?没有这个库,我实现了我想要的。它是否来自pdfjs库?也许是的。我给他们发了一期。