ghost-memory-optimization-plan.md 2.7 KB

GhostProvider Memory Optimization Implementation Plan

Overview

This document provides a focused plan for fixing the critical memory issues in the GhostProvider system. Each task addresses a specific memory problem that's causing stability issues.

Memory Monitoring (Optional Enhancement)

Output Channel Logging

  • Create dedicated "Kilo Code Memory" output channel
  • Log memory stats periodically with timestamps
  • Include heap usage, document count, AST count, parser count
  • Provide visibility into memory usage patterns

Critical Memory Fixes

Issue 1: Unbounded Document Storage

Problem: Document store grows indefinitely without cleanup File: src/services/ghost/GhostDocumentStore.ts Solution: Add LRU eviction when document limit is exceeded

Issue 2: Large File AST Parsing

Problem: Very large files consume excessive memory for AST parsing File: src/services/ghost/GhostDocumentStore.ts Solution: Skip AST parsing for files over size/line limits

Issue 3: Parser Instance Recreation

Problem: Tree-sitter parsers are recreated instead of reused File: src/services/tree-sitter/languageParser.ts Solution: Implement global parser cache with reuse

Issue 4: Inefficient Debouncing

Problem: Fixed 500ms debounce causes unnecessary parsing File: src/services/ghost/GhostDocumentStore.ts Solution: Dynamic debounce timing based on file size

Implementation Tasks

Task 1: Document Store Size Management

  • Add lastAccessed timestamp to document items
  • Implement LRU eviction when MAX_DOCUMENTS exceeded
  • Call enforcement on every store operation

Task 2: AST Size Limits

  • Add file size check before parsing (5MB limit)
  • Add line count check (10k lines limit)
  • Skip parsing with warning for large files

Task 3: Parser Instance Reuse

  • Create global parser cache
  • Implement usage counting for parsers
  • Add parser disposal methods

Task 4: Smart Debouncing

  • Dynamic debounce timing based on file size
  • Shorter delays for small files, longer for large files
  • Reduce unnecessary AST parsing frequency

Task 5: Memory Monitoring (Optional)

  • Create MemoryPressureService for monitoring
  • Add output channel for memory logging
  • Integrate with existing services for visibility

Task Order

  1. Task 2: AST Size Limits (Highest Impact - Prevents large memory allocations)
  2. Task 1: Document Store Size Management (Prevents unbounded growth)
  3. Task 3: Parser Instance Reuse (Eliminates parser recreation overhead)
  4. Task 4: Smart Debouncing (Reduces parsing frequency)
  5. Task 5: Memory Monitoring (Optional - Provides visibility)

Each task can be implemented and committed independently.