<!DOCTYPE html> <!-- Copyright 2018 the V8 project authors. All rights reserved. Use of this source code is governed by a BSD-style license that can be found in the LICENSE file. --> <html lang="en"> <head> <meta charset="UTF-8"> <title>V8 Heap Statistics</title> <link href='https://fonts.googleapis.com/css?family=Roboto' rel='stylesheet'> <script src="https://www.gstatic.com/charts/loader.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.6/pako_inflate.min.js" integrity="sha256-N1z6ddQzX83fjw8v7uSNe7/MgOmMKdwFUv1+AJMDqNM=" crossorigin="anonymous"></script> <script src="helper.js"></script> <link rel="import" href="details-selection.html"> <link rel="import" href="global-timeline.html"> <link rel="import" href="histogram-viewer.html"> <link rel="import" href="trace-file-reader.html"> <style> body { font-family: 'Roboto', sans-serif; margin-left: 5%; margin-right: 5%; } </style> <script> 'use strict'; google.charts.load('current', {'packages':['line', 'corechart', 'bar']}); function $(id) { return document.querySelector(id); } function removeAllChildren(node) { while (node.firstChild) { node.removeChild(node.firstChild); } } let state = Object.create(null); function globalDataChanged(e) { state.data = e.detail; // Emit one entry with the whole model for debugging purposes. console.log(state.data); state.selection = null; $('#global-timeline').selection = state.selection; $('#global-timeline').data = state.data; $('#histogram-viewer').selection = state.selection; $('#histogram-viewer').data = state.data; $('#details-selection').data = state.data; } function globalSelectionChangedA(e) { state.selection = e.detail; console.log(state.selection); $('#global-timeline').selection = state.selection; $('#histogram-viewer').selection = state.selection; } </script> </head> <body> <h1>V8 Heap Statistics</h1> <trace-file-reader onchange="globalDataChanged(event)"></trace-file-reader> <details-selection id="details-selection" onchange="globalSelectionChangedA(event)"></details-selection> <global-timeline id="global-timeline"></global-timeline> <histogram-viewer id="histogram-viewer"></histogram-viewer> <p>Visualize object statistics that have been gathered using</p> <ul> <li><code>--trace-gc-object-stats</code> on V8</li> <li> <a href="https://www.chromium.org/developers/how-tos/trace-event-profiling-tool">Chrome's tracing infrastructure</a> collecting data for the category <code>v8.gc_stats</code>. </li> </ul> <p> Note that you only get a data point on major GCs. You can enforce this by using the <code>--gc-global</code> flag. </p> <p> Note that the visualizer needs to run on a web server due to HTML imports requiring <a href="https://en.wikipedia.org/wiki/Cross-origin_resource_sharing">CORS</a>. </p> </body> </html>