| <!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' type='text/css'> |
| <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> |
| |
| <link rel="import" href="details-selection.html"> |
| <link rel="import" href="global-timeline.html"> |
| <link rel="import" href="trace-file-reader.html"> |
| |
| <style type="text/css"> |
| |
| body { |
| font-family: 'Roboto', sans-serif; |
| margin-left: 5%; |
| margin-right: 5%; |
| } |
| |
| </style> |
| <script type="text/javascript"> |
| |
| 'use strict'; |
| |
| google.charts.load('current', {'packages':['line', 'corechart']}); |
| |
| 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; |
| $('#type-details').selection = state.selection; |
| $('#type-details').data = state.data; |
| $('#details-selection').data = state.data; |
| } |
| |
| function globalSelectionChangedA(e) { |
| state.selection = e.detail; |
| $('#global-timeline').selection = state.selection; |
| $('#type-details').selection = state.selection; |
| } |
| |
| </script> |
| </head> |
| |
| <body> |
| <trace-file-reader onchange="globalDataChanged(event)"></trace-file-reader> |
| <h1>V8 Heap Statistics</h1> |
| <p>Visualize object statistics that have been gathered using</p> |
| <ul> |
| <li><code>--trace-gc-object-stats on V8</code></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>. The trace file needs to be unpacked (e.g. using |
| <code>gunzip</code>). |
| </li> |
| </ul> |
| <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> |
| <details-selection id="details-selection" onchange="globalSelectionChangedA(event)"></details-selection> |
| <global-timeline id="global-timeline"></global-timeline> |
| <type-details id="type-details"></type-details> |
| </body> |
| |
| </html> |