Skip to content

Properly handle retainers for WeakMaps/WeakSets #2

@nolanlawson

Description

@nolanlawson

First off, thank you for creating this tool! It works amazingly well, and solves many of the problems with working with heap snapshots that I mentioned in my blog post and this issue I opened on Chromium.

One issue I notice, though, is that when identifying the retainers for an object with a given ID, it doesn't properly take WeakMaps/WeakSets into account. For instance:

  1. When an object is the key in a WeakMap, then the WeakMap itself (and its retainers) are not really retaining the object. So in this case the WeakMap is irrelevant and should be removed. However, the tool does not do this.
  2. When the object is the value in a WeakMap, then the key is what's retaining the object (plus the retainers of the WeakMap itself). However, the tool does not seem to follow the retainers for the key (meaning you would have to do a separate analysis for that object ID, which can get impractical in an object graph with many WeakMaps/WeakSets).

Thanks again for the tool! I would be excited to see it integrated into the Chrome DevTools themselves, and to improve the handling of WeakMaps/WeakSets. 🙂

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions