The VM supports profiling the size of AOT snapshots by leveraging the object-graph based file format introduced by V8.
To generate a snapshot profile, simply pass the --write-v8-snapshot-profile-to=<filename>
flag to gen_snapshot
. The profile will be written in JSON format to the requested file. Make sure to use the “.heapsnapshot” extension for the file to open it in Chrome DevTools.
Open Chrome DevTools, navigate to the “Memory” tab, right-click on the “Profiles” panel, click Load..." and select the snapshot profile file. See https://developers.google.com/web/tools/chrome-devtools/memory-problems/heap-snapshots for details on how to use the tool.
A Dart library to parse the snapshot profile format is provided in pkg/vm/lib/v8_snapshot_profile.dart
. The dart2js_info
package has some useful code for calculating retainers and other graph statistics.