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