From 921f8bd6691f7b42c7ef9dd9a0ce35f32679173c Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Fri, 16 Sep 2011 08:09:58 -0700 Subject: [PATCH] Tried to add a destroy function to free memeory, but doesn't seem to help --- test/driver.js | 5 +++++ worker.js | 20 +++++++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/test/driver.js b/test/driver.js index d272aab69..79f94568b 100644 --- a/test/driver.js +++ b/test/driver.js @@ -50,6 +50,11 @@ function load() { window.onload = load; function nextTask() { + // If there is a pdfDoc on the last task executed, destroy it to free memory. + if (task && task.pdfDoc) { + task.pdfDoc.destroy(); + delete task.pdfDoc; + } if (currentTaskIdx == manifest.length) { return done(); } diff --git a/worker.js b/worker.js index eabdf66e3..1a143c1d6 100644 --- a/worker.js +++ b/worker.js @@ -182,7 +182,7 @@ var WorkerPDFDoc = (function() { var useWorker = true; if (useWorker) { - var worker = new Worker("../worker/boot_processor.js"); + var worker = this.worker = new Worker("../worker/boot_processor.js"); } else { // If we don't use a worker, just post/sendMessage to the main thread. var worker = { @@ -262,6 +262,24 @@ var WorkerPDFDoc = (function() { var page = this.pdf.getPage(n); return this.pageCache[n] = new WorkerPage(this, page); + }, + + destroy: function() { + console.log("destroy worker"); + if (this.worker) { + this.worker.terminate(); + } + if (this.fontWorker) { + this.fontWorker.terminate(); + } + + for (var n in this.pageCache) { + delete this.pageCache[n]; + } + delete this.data; + delete this.stream; + delete this.pdf; + delete this.catalog; } };