Confirmed users
328
edits
No edit summary |
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]] | |||
---------------------------------------------------------------------- | ---------------------------------------------------------------------- | ||