streamable heap snapshot system for constrained memory (WASM)
- existing browser heap snapshot infrastructure (i.e. chrome and firefox's) assume it is possible to build a full retained graph of the heap in memory, and sometimes require multiple passes to generate the snapshot file before saving it. this can result in out-of-memory crashes when attempting to save or load a snapshot. our customers have very large heaps they want to take snapshots of, so this approach is unsuitable
- these snapshot tools only understand the JS heap, and don't have any hooks we could use to feed our GC heap layout into them when a snapshot is taken anyway
- existing viewers for these formats are incredibly fragile and basically only work on snapshots that were generated by a recent version of the same browser, so we can't realistically generate snapshots in this format. if a snapshot fails to load you barely get any sort of error message
- .net has a couple answers for this (can we leverage their tooling?), coreclr gcdump an