summaryrefslogtreecommitdiff
path: root/deps/v8/tools/heap-stats/index.html
blob: 3c2e62b6d0b6d03ebf60e21222c6d6dd494276dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!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>