From b3f17bca4cf317c944f729407da0377f44f5a2d0 Mon Sep 17 00:00:00 2001 From: amhsirak Date: Mon, 6 Jan 2025 11:46:06 +0530 Subject: [PATCH] feat: memory management for screenshot streaming --- .../browser-management/classes/RemoteBrowser.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/server/src/browser-management/classes/RemoteBrowser.ts b/server/src/browser-management/classes/RemoteBrowser.ts index dd97a809..ebdb8cac 100644 --- a/server/src/browser-management/classes/RemoteBrowser.ts +++ b/server/src/browser-management/classes/RemoteBrowser.ts @@ -110,6 +110,23 @@ export class RemoteBrowser { this.startPerformanceReporting(); } + private initializeMemoryManagement(): void { + setInterval(() => { + const memoryUsage = process.memoryUsage(); + const heapUsageRatio = memoryUsage.heapUsed / MEMORY_CONFIG.maxHeapSize; + + if (heapUsageRatio > MEMORY_CONFIG.heapUsageThreshold) { + logger.warn('High memory usage detected, triggering cleanup'); + this.performMemoryCleanup(); + } + + // Clear screenshot queue if it's too large + if (this.screenshotQueue.length > SCREENCAST_CONFIG.maxQueueSize) { + this.screenshotQueue = this.screenshotQueue.slice(-SCREENCAST_CONFIG.maxQueueSize); + } + }, MEMORY_CONFIG.gcInterval); + } + /** * Normalizes URLs to prevent navigation loops while maintaining consistent format */