mirror of
https://github.com/sweetwisdom/everything-claude-code-zh.git
synced 2026-03-22 06:20:10 +00:00
feat: add continuous learning skill with session examples
Stop hook-based pattern extraction - no README, comments in .sh file.
This commit is contained in:
54
examples/sessions/2026-01-17-debugging-memory.tmp
Normal file
54
examples/sessions/2026-01-17-debugging-memory.tmp
Normal file
@@ -0,0 +1,54 @@
|
||||
# Session: Memory Leak Investigation
|
||||
**Date:** 2026-01-17
|
||||
**Started:** 09:00
|
||||
**Last Updated:** 12:00
|
||||
|
||||
---
|
||||
|
||||
## Current State
|
||||
|
||||
Investigating memory leak in production. Heap growing unbounded over 24h period.
|
||||
|
||||
### Completed
|
||||
- [x] Set up heap snapshots in staging
|
||||
- [x] Identified leak source: event listeners not being cleaned up
|
||||
- [x] Fixed leak in WebSocket handler
|
||||
- [x] Verified fix with 4h soak test
|
||||
|
||||
### Root Cause
|
||||
WebSocket `onMessage` handlers were being added on reconnect but not removed on disconnect. After ~1000 reconnects, memory grew from 200MB to 2GB.
|
||||
|
||||
### The Fix
|
||||
```javascript
|
||||
// Before (leaking)
|
||||
socket.on('connect', () => {
|
||||
socket.on('message', handleMessage)
|
||||
})
|
||||
|
||||
// After (fixed)
|
||||
socket.on('connect', () => {
|
||||
socket.off('message', handleMessage) // Remove old listener first
|
||||
socket.on('message', handleMessage)
|
||||
})
|
||||
|
||||
// Even better - use once or cleanup on disconnect
|
||||
socket.on('disconnect', () => {
|
||||
socket.removeAllListeners('message')
|
||||
})
|
||||
```
|
||||
|
||||
### Debugging Technique Worth Saving
|
||||
1. Take heap snapshot at T=0
|
||||
2. Force garbage collection: `global.gc()`
|
||||
3. Run suspected operation N times
|
||||
4. Take heap snapshot at T=1
|
||||
5. Compare snapshots - look for objects with count = N
|
||||
|
||||
### Notes for Next Session
|
||||
- Add memory monitoring alert at 1GB threshold
|
||||
- Document this debugging pattern for team
|
||||
|
||||
### Context to Load
|
||||
```
|
||||
src/services/websocket.js
|
||||
```
|
||||
Reference in New Issue
Block a user