| name | memory-leak-detector |
| description | Detect memory leaks in desktop applications through heap analysis and object tracking |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep |
| tags | ["performance","memory","leaks","debugging","profiling"] |
| graph | {"domains":["domain:software-engineering"],"specializations":["specialization:desktop-development"],"skillAreas":["skill-area:profiling-memory","skill-area:performance-monitoring-profiling"],"roles":["role:desktop-developer","role:fullstack-engineer"],"workflows":["workflow:feature-development","workflow:release-management"]} |
memory-leak-detector
Detect memory leaks in desktop applications through heap snapshot analysis, object tracking, and growth pattern detection.
Capabilities
- Capture and compare heap snapshots
- Track object allocation growth
- Identify retained objects
- Detect common leak patterns
- Generate leak reports
- Suggest fixes
Input Schema
{
"type": "object",
"properties": {
"projectPath": { "type": "string" },
"framework": { "enum": ["electron", "native", "qt"] },
"duration": { "type": "number", "default": 60 }
},
"required": ["projectPath"]
}
Detection Approach
const v8 = require('v8');
function detectLeaks(iterations = 3, intervalMs = 10000) {
const snapshots = [];
const interval = setInterval(() => {
global.gc();
const snapshot = v8.getHeapStatistics();
snapshots.push(snapshot);
if (snapshots.length >= iterations) {
clearInterval(interval);
analyzeGrowth(snapshots);
}
}, intervalMs);
}
function analyzeGrowth(snapshots) {
const growth = snapshots[snapshots.length - 1].used_heap_size -
snapshots[0].used_heap_size;
console.log(`Heap growth: ${growth / 1024 / 1024} MB`);
}
Common Leak Patterns
- Event listeners not removed
- Closures holding references
- Global variable accumulation
- Timer/interval not cleared
- DOM node detachment
Related Skills
electron-memory-profiler
startup-time-profiler