OLD | NEW |
1 <head> | 1 <link rel="import" href="../../../../packages/polymer/polymer.html"> |
2 <link rel="import" href="class_ref.html"> | 2 <link rel="import" href="class_ref.html"> |
3 <link rel="import" href="observatory_element.html"> | 3 <link rel="import" href="observatory_element.html"> |
4 <link rel="import" href="nav_bar.html"> | 4 <link rel="import" href="nav_bar.html"> |
5 </head> | 5 |
6 <polymer-element name="heap-profile" extends="observatory-element"> | 6 <polymer-element name="heap-profile" extends="observatory-element"> |
7 <template> | 7 <template> |
8 <link rel="stylesheet" href="css/shared.css"> | 8 <link rel="stylesheet" href="css/shared.css"> |
9 <style> | 9 <style> |
10 .table { | 10 .table { |
11 border-collapse: collapse!important; | 11 border-collapse: collapse!important; |
12 width: 100%; | |
13 margin-bottom: 20px | 12 margin-bottom: 20px |
14 table-layout: fixed; | 13 table-layout: fixed; |
15 } | 14 } |
16 .table td:nth-of-type(1) { | 15 .table td:nth-of-type(1) { |
17 width: 30%; | 16 width: 30%; |
18 } | 17 } |
19 .th, .td { | 18 .th, .td { |
20 padding: 8px; | 19 padding: 8px; |
21 vertical-align: top; | 20 vertical-align: top; |
22 } | 21 } |
23 .table thead > tr > th { | 22 .table thead > tr > th { |
24 vertical-align: bottom; | 23 vertical-align: bottom; |
25 text-align: left; | 24 text-align: left; |
26 border-bottom:2px solid #ddd; | 25 border-bottom:2px solid #ddd; |
27 } | 26 } |
| 27 .spacer { |
| 28 width: 16px; |
| 29 } |
| 30 .left-border-spacer { |
| 31 width: 16px; |
| 32 border-left: 1px solid; |
| 33 } |
28 .clickable { | 34 .clickable { |
29 color: #0489c3; | 35 color: #0489c3; |
30 text-decoration: none; | 36 text-decoration: none; |
31 cursor: pointer; | 37 cursor: pointer; |
32 } | 38 } |
33 .clickable:hover { | 39 .clickable:hover { |
34 text-decoration: underline; | 40 text-decoration: underline; |
35 cursor: pointer; | 41 cursor: pointer; |
36 } | 42 } |
37 #classtable tr:hover > td { | 43 #classtable tr:hover > td { |
38 background-color: #F4C7C3; | 44 background-color: #F4C7C3; |
39 } | 45 } |
40 </style> | 46 </style> |
41 <nav-bar> | 47 <nav-bar> |
42 <top-nav-menu></top-nav-menu> | 48 <top-nav-menu></top-nav-menu> |
43 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu> | 49 <isolate-nav-menu isolate="{{ profile.isolate }}"></isolate-nav-menu> |
44 <nav-menu link="{{ profile.isolate.relativeLink('allocationprofile') }}" anc
hor="heap profile" last="{{ true }}"></nav-menu> | 50 <nav-menu link="{{ profile.isolate.relativeLink('allocationprofile') }}" anc
hor="allocation profile" last="{{ true }}"></nav-menu> |
45 <nav-refresh callback="{{ resetAccumulator }}" label="Reset Accumulator"></n
av-refresh> | 51 <nav-refresh callback="{{ resetAccumulator }}" label="Reset Accumulator"></n
av-refresh> |
46 <nav-refresh callback="{{ refreshGC }}" label="GC"></nav-refresh> | 52 <nav-refresh callback="{{ refreshGC }}" label="GC"></nav-refresh> |
47 <nav-refresh callback="{{ refresh }}"></nav-refresh> | 53 <nav-refresh callback="{{ refresh }}"></nav-refresh> |
48 <nav-control></nav-control> | 54 <nav-control></nav-control> |
49 </nav-bar> | 55 </nav-bar> |
50 | 56 <div class="content"> |
51 <div class="flex-row"> | 57 <h1>Allocation Profile</h1> |
52 <div id="newPieChart" class="flex-item-fixed-4-12" style="height: 400px"> | 58 <br> |
| 59 <div class="memberList"> |
| 60 <div class="memberItem"> |
| 61 <div class="memberName">last forced GC at</div> |
| 62 <div class="memberValue">{{ lastServiceGC }}</div> |
| 63 </div> |
| 64 <div class="memberItem"> |
| 65 <div class="memberName">last accumulator reset at</div> |
| 66 <div class="memberValue">{{ lastAccumulatorReset }}</div> |
| 67 </div> |
53 </div> | 68 </div> |
54 <div id="newStatus" class="flex-item-fixed-2-12"> | 69 </div> |
55 <div class="memberList"> | 70 <hr> |
| 71 <div class="content-centered-big"> |
| 72 <div class="flex-row"> |
| 73 <div id="newSpace" class="flex-item-50-percent"> |
| 74 <h2>New Generation</h2> |
| 75 <br> |
| 76 <div class="memberList"> |
| 77 <div class="memberItem"> |
| 78 <div class="memberName">used</div> |
| 79 <div class="memberValue"> |
| 80 {{ isolate.newSpace.used | formatSize }} |
| 81 of |
| 82 {{ isolate.newSpace.capacity | formatSize }} |
| 83 </div> |
| 84 </div> |
| 85 <div class="memberItem"> |
| 86 <div class="memberName">external</div> |
| 87 <div class="memberValue"> |
| 88 {{ isolate.newSpace.external | formatSize }} |
| 89 </div> |
| 90 </div> |
56 <div class="memberItem"> | 91 <div class="memberItem"> |
57 <div class="memberName">Collections</div> | 92 <div class="memberName">Collections</div> |
58 <div class="memberValue">{{ formattedCollections(true) }}</div> | 93 <div class="memberValue">{{ formattedCollections(true) }}</div> |
59 </div> | 94 </div> |
60 <div class="memberItem"> | 95 <div class="memberItem"> |
61 <div class="memberName">Average Collection Time</div> | 96 <div class="memberName">Average Collection Time</div> |
62 <div class="memberValue">{{ formattedAverage(true) }}</div> | 97 <div class="memberValue">{{ formattedAverage(true) }}</div> |
63 </div> | 98 </div> |
64 <div class="memberItem"> | 99 <div class="memberItem"> |
65 <div class="memberName">Cumulative Collection Time</div> | 100 <div class="memberName">Cumulative Collection Time</div> |
66 <div class="memberValue">{{ formattedTotalCollectionTime(true) }}</d
iv> | 101 <div class="memberValue">{{ formattedTotalCollectionTime(true) }}</d
iv> |
67 </div> | 102 </div> |
| 103 </div> |
| 104 <div id="newPieChart" style="height: 300px"></div> |
68 </div> | 105 </div> |
69 </div> | 106 <div id="oldSpace" class="flex-item-50-percent"> |
70 <div id="oldPieChart" class="flex-item-fixed-4-12" style="height: 400px"> | 107 <h2>Old Generation</h2> |
71 </div> | 108 <br> |
72 <div id="oldStatus" class="flex-item-fixed-2-12"> | 109 <div class="memberList"> |
73 <div class="memberList"> | 110 <div class="memberItem"> |
| 111 <div class="memberName">used</div> |
| 112 <div class="memberValue"> |
| 113 {{ isolate.oldSpace.used | formatSize }} |
| 114 of |
| 115 {{ isolate.oldSpace.capacity | formatSize }} |
| 116 </div> |
| 117 </div> |
| 118 <div class="memberItem"> |
| 119 <div class="memberName">external</div> |
| 120 <div class="memberValue"> |
| 121 {{ isolate.oldSpace.external | formatSize }} |
| 122 </div> |
| 123 </div> |
74 <div class="memberItem"> | 124 <div class="memberItem"> |
75 <div class="memberName">Collections</div> | 125 <div class="memberName">Collections</div> |
76 <div class="memberValue">{{ formattedCollections(false) }}</div> | 126 <div class="memberValue">{{ formattedCollections(false) }}</div> |
77 </div> | 127 </div> |
78 <div class="memberItem"> | 128 <div class="memberItem"> |
79 <div class="memberName">Average Collection Time</div> | 129 <div class="memberName">Average Collection Time</div> |
80 <div class="memberValue">{{ formattedAverage(false) }}</div> | 130 <div class="memberValue">{{ formattedAverage(false) }}</div> |
81 </div> | 131 </div> |
82 <div class="memberItem"> | 132 <div class="memberItem"> |
83 <div class="memberName">Cumulative Collection Time</div> | 133 <div class="memberName">Cumulative Collection Time</div> |
84 <div class="memberValue">{{ formattedTotalCollectionTime(false) }}</
div> | 134 <div class="memberValue">{{ formattedTotalCollectionTime(false) }}</
div> |
85 </div> | 135 </div> |
| 136 </div> |
| 137 <div id="oldPieChart" style="height: 300px"></div> |
86 </div> | 138 </div> |
87 </div> | 139 </div> |
88 </div> | 140 </div> |
89 <div class="flex-row"> | 141 <br> |
90 <table id="classtable" class="flex-item-fixed-12-12 table"> | 142 <hr> |
91 <thead> | 143 <div class="content-centered-big"> |
| 144 <table id="classtable" class="flex-item-100-percent table"> |
| 145 <thead id="classTableHead"> |
92 <tr> | 146 <tr> |
93 <th on-click="{{changeSort}}" class="clickable" title="Class">{{ class
Table.getColumnLabel(0) }}</th> | 147 <th on-click="{{changeSort}}" class="clickable" title="Class">{{ class
Table.getColumnLabel(0) }}</th> |
94 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated
Size">{{ classTable.getColumnLabel(1) }}</th> | 148 <th class="spacer"></th> |
95 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated
Instances">{{ classTable.getColumnLabel(2) }}</th> | 149 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated
Size">{{ classTable.getColumnLabel(2) }}</th> |
96 <th on-click="{{changeSort}}" class="clickable" title="New Current Siz
e">{{ classTable.getColumnLabel(3) }}</th> | 150 <th on-click="{{changeSort}}" class="clickable" title="New Accumulated
Instances">{{ classTable.getColumnLabel(3) }}</th> |
97 <th on-click="{{changeSort}}" class="clickable" title="New Current Ins
tances">{{ classTable.getColumnLabel(4) }}</th> | 151 <th on-click="{{changeSort}}" class="clickable" title="New Current Siz
e">{{ classTable.getColumnLabel(4) }}</th> |
98 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated
Size">{{ classTable.getColumnLabel(5) }}</th> | 152 <th on-click="{{changeSort}}" class="clickable" title="New Current Ins
tances">{{ classTable.getColumnLabel(5) }}</th> |
99 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated
Instances">{{ classTable.getColumnLabel(6) }}</th> | 153 <th class="spacer"></th> |
100 <th on-click="{{changeSort}}" class="clickable" title="Old Current Siz
e">{{ classTable.getColumnLabel(7) }}</th> | 154 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated
Size">{{ classTable.getColumnLabel(7) }}</th> |
101 <th on-click="{{changeSort}}" class="clickable" title="Old Current Ins
tances">{{ classTable.getColumnLabel(8) }}</th> | 155 <th on-click="{{changeSort}}" class="clickable" title="Old Accumulated
Instances">{{ classTable.getColumnLabel(8) }}</th> |
| 156 <th on-click="{{changeSort}}" class="clickable" title="Old Current Siz
e">{{ classTable.getColumnLabel(9) }}</th> |
| 157 <th on-click="{{changeSort}}" class="clickable" title="Old Current Ins
tances">{{ classTable.getColumnLabel(10) }}</th> |
102 </tr> | 158 </tr> |
103 </thead> | 159 </thead> |
104 <tbody> | 160 <tbody id="classTableBody"> |
105 <tr template repeat="{{row in classTable.sortedRows }}"> | |
106 <td><class-ref ref="{{ classTable.getValue(row, 0) }}"></class-ref></t
d> | |
107 <td title="{{ classTable.getValue(row, 1) }}">{{ classTable.getFormatt
edValue(row, 1) }}</td> | |
108 <td title="{{ classTable.getValue(row, 2) }}">{{ classTable.getFormatt
edValue(row, 2) }}</td> | |
109 <td title="{{ classTable.getValue(row, 3) }}">{{ classTable.getFormatt
edValue(row, 3) }}</td> | |
110 <td title="{{ classTable.getValue(row, 4) }}">{{ classTable.getFormatt
edValue(row, 4) }}</td> | |
111 <td title="{{ classTable.getValue(row, 5) }}">{{ classTable.getFormatt
edValue(row, 5) }}</td> | |
112 <td title="{{ classTable.getValue(row, 6) }}">{{ classTable.getFormatt
edValue(row, 6) }}</td> | |
113 <td title="{{ classTable.getValue(row, 7) }}">{{ classTable.getFormatt
edValue(row, 7) }}</td> | |
114 <td title="{{ classTable.getValue(row, 8) }}">{{ classTable.getFormatt
edValue(row, 8) }}</td> | |
115 </tr> | |
116 </tbody> | 161 </tbody> |
117 </table> | 162 </table> |
| 163 <br><br><br> |
| 164 <br><br><br> |
118 </div> | 165 </div> |
119 </template> | 166 </template> |
120 <script type="application/dart" src="heap_profile.dart"></script> | |
121 </polymer-element> | 167 </polymer-element> |
| 168 |
| 169 <script type="application/dart" src="heap_profile.dart"></script> |
OLD | NEW |