Confirmed users
328
edits
|  (Created page with "== Problem A ==  When a bad memory leak kicks in, the system can be too unusable to get useful data out.  === Solution ===  Make it easier to get information out when the system ...") | No edit summary | ||
| Line 1: | Line 1: | ||
| == Problem A == | == Problem A: System too unusable to diagnose == | ||
| When a bad memory leak kicks in, the system can be too unusable to | When a bad memory leak kicks in, the system can be too unusable to get useful data out. | ||
| get useful data out. | |||
| === Solution === | === Solution === | ||
| Line 31: | Line 30: | ||
| actual crash to trigger) | actual crash to trigger) | ||
| == Problem B == | == Problem B: Regular users can't generate useful reports  == | ||
| Hard for regular users to generate a useful memory problem report | Hard for regular users to generate a useful memory problem report | ||
| Line 51: | Line 50: | ||
| usage similar to the crash correlation reports -- requires telemetry.) | usage similar to the crash correlation reports -- requires telemetry.) | ||
| == Problem C == | == Problem C: Knowledgeable users can't generate useful reports == | ||
| Hard for developers or knowledgeable and motivated users to generate | Hard for developers or knowledgeable and motivated users to generate | ||
| Line 68: | Line 67: | ||
| alive.) | alive.) | ||
| == Problem D == | == Problem D: Uncollected garbage == | ||
| Garbage is not collected | Garbage is not collected | ||
| Line 90: | Line 89: | ||
| [[#D4]] Detect subgraphs that are never accessed | [[#D4]] Detect subgraphs that are never accessed | ||
| == Problem E == | == Problem E: Unleaked but excessive memory usage == | ||
| High memory usage, not leaked | High memory usage, not leaked | ||
| Line 102: | Line 101: | ||
| tradeoff is for various things (eg jit code, structure sizes) | tradeoff is for various things (eg jit code, structure sizes) | ||
| == Problem F == | == Problem F: Hard to track down problems == | ||
| Hard to navigate through a memory dump or the current state to track | Hard to navigate through a memory dump or the current state to track | ||
| Line 109: | Line 108: | ||
| [[#F1]] Dump all roots of a compartment, and trace roots back to the XPCOM/DOM/whatever thing that is holding onto that root (when available) | [[#F1]] Dump all roots of a compartment, and trace roots back to the XPCOM/DOM/whatever thing that is holding onto that root (when available) | ||
| [[#F2]]  | [[#F2]] Go from JS object to things keeping it alive (dump out GC edges) -- see jimb's findReferences (currently JS shell only) | ||
| [[#F3]]   | [[#F3]] Record addr,size,stack at every allocation (kgadd's heap visualizer) | ||
| [[#F4]]   | |||
| ---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||