From 8922d0693b04805d03d913bed5810c43cb606d1a Mon Sep 17 00:00:00 2001 From: yoni kremer Date: Fri, 7 Aug 2026 23:14:56 +0300 Subject: [PATCH 1/2] fix: avoid 1M cells reserve to reduce memory footprint Pre-allocating 1M cells per PAGE_CELLS container wasted ~300 MB per container. With 5 such containers per decoded page (page_cells, char_cells, cells, word_cells, line_cells) this multiplied to ~1.5 GB committed per page and OOMs on small docs when several pages were decoded concurrently. Let the vector grow on demand instead; typical pages have only hundreds to a few thousand cells. Co-Authored-By: Claude --- src/parse/page_items/page_cells.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/parse/page_items/page_cells.h b/src/parse/page_items/page_cells.h index 1fee4f6d..0d12c218 100644 --- a/src/parse/page_items/page_cells.h +++ b/src/parse/page_items/page_cells.h @@ -44,10 +44,10 @@ namespace pdflib }; page_item::page_item(): - cells(0) // 0 elements - { - cells.reserve(1000000); // Reserve space for 1M elements - } + cells(0) // 0 elements; capacity grows on demand. No up-front reserve: + // several of these containers live per decoded page, so a large + // fixed reserve multiplies into gigabytes of committed memory. + {} page_item::~page_item() {} From 5f7a01ea2169cec7350b6664e21ee6c4122dde1c Mon Sep 17 00:00:00 2001 From: yoni kremer Date: Fri, 7 Aug 2026 23:18:36 +0300 Subject: [PATCH 2/2] DCO Remediation Commit for yoni kremer I, yoni kremer , hereby add my Signed-off-by to this commit: 8922d0693b04805d03d913bed5810c43cb606d1a Signed-off-by: yoni kremer