RESOLVED FIXED 56395
Web Inspector: [Chromium] Reduce memory consumption by detailed heap snapshots indexes
https://bugs.webkit.org/show_bug.cgi?id=56395
Summary Web Inspector: [Chromium] Reduce memory consumption by detailed heap snapshot...
Mikhail Naganov
Reported 2011-03-15 11:49:35 PDT
I optimized index structures used in detailed heap profiles. Generally, changing hash maps to arrays of sorted values saves a lot. Also, reversed graph wasn't stored optimally, effectively consuming almost the same amount of memory as the original graph does. Making this change frees 30% memory when working with 2 snapshots of GMail, making diffs, and tracing paths to GC root (from 382353KB down to 264946KB).
Attachments
patch (15.69 KB, patch)
2011-03-15 11:54 PDT, Mikhail Naganov
pfeldman: review+
mnaganov: commit-queue-
Mikhail Naganov
Comment 1 2011-03-15 11:54:33 PDT
Pavel Feldman
Comment 2 2011-03-16 11:08:02 PDT
Comment on attachment 85836 [details] patch I hope this is covered with some test. Is it? Profiler is of scary size now.
Mikhail Naganov
Comment 3 2011-03-17 03:25:15 PDT
(In reply to comment #2) > (From update of attachment 85836 [details]) > I hope this is covered with some test. Is it? Profiler is of scary size now. I plan to add tests soon, because making such changes starts frightening myself.
Mikhail Naganov
Comment 4 2011-03-17 10:49:51 PDT
Manually committed: http://trac.webkit.org/changeset/81343 2011-03-17 Mikhail Naganov <mnaganov@chromium.org> Reviewed by Pavel Feldman. Web Inspector: [Chromium] Reduce memory consumption by detailed heap snapshots indexes. https://bugs.webkit.org/show_bug.cgi?id=56395 * inspector/front-end/DetailedHeapshotGridNodes.js: (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider.createProvider): (WebInspector.HeapSnapshotDiffNode.prototype._createNodesProvider): * inspector/front-end/HeapSnapshot.js: (WebInspector.HeapSnapshotRetainerEdge): Added (WebInspector.HeapSnapshotRetainerEdgeIterator): Added (WebInspector.HeapSnapshotNode.prototype.get retainers): (WebInspector.HeapSnapshot.prototype.dispose): (WebInspector.HeapSnapshot.prototype.hasId): (WebInspector.HeapSnapshot.prototype.retainers): (WebInspector.HeapSnapshot.prototype._buildRetainers): (WebInspector.HeapSnapshot.prototype._buildIdsList): (WebInspector.HeapSnapshot.prototype._buildNodeIndex): (WebInspector.HeapSnapshot.prototype._findNodePositionInIndex): (WebInspector.HeapSnapshot.prototype._findNearestNodeIndex): (WebInspector.HeapSnapshot.prototype._getRetainerIndex): (WebInspector.HeapSnapshot.prototype._markInvisibleEdges): (WebInspector.HeapSnapshot.prototype._numbersComparator): (WebInspector.HeapSnapshotPathFinder.prototype.get _lastEdge): (WebInspector.HeapSnapshotPathFinder.prototype._nextEdgeIter): (WebInspector.HeapSnapshotPathFinder.prototype._buildNextPath): (WebInspector.HeapSnapshotPathFinder.prototype._pathToString):
Note You need to log in before you can comment on or make changes to this bug.