Skip to content

Commit 71930db

Browse files
jisedlacthurka
authored andcommitted
Fixed displaying red/green bars in diff results
1 parent f4845e1 commit 71930db

File tree

3 files changed

+47
-15
lines changed

3 files changed

+47
-15
lines changed

visualvm/heapviewer/src/com/sun/tools/visualvm/heapviewer/java/impl/JavaDiffObjectsView.java

Lines changed: 43 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@
5757
import javax.swing.JMenuItem;
5858
import javax.swing.JPopupMenu;
5959
import javax.swing.JToggleButton;
60+
import javax.swing.SwingUtilities;
6061
import org.netbeans.lib.profiler.heap.JavaClass;
6162
import org.netbeans.lib.profiler.ui.swing.GrayLabel;
6263
import org.netbeans.lib.profiler.ui.swing.renderer.HideableBarRenderer;
6364
import org.netbeans.lib.profiler.ui.swing.renderer.ProfilerRenderer;
65+
import org.netbeans.lib.profiler.ui.swing.renderer.RelativeRenderer;
6466
import org.netbeans.modules.profiler.api.ProfilerDialogs;
6567
import org.netbeans.modules.profiler.api.icons.Icons;
6668
import org.netbeans.modules.profiler.api.icons.LanguageIcons;
@@ -111,6 +113,10 @@ private static enum Aggregation {
111113
private HeapViewerNode status;
112114
private List<ClassNode> diffClasses;
113115

116+
private int maxDiffCount = 0;
117+
private long maxDiffSize = 0;
118+
private long maxDiffRetained = 0;
119+
114120
private final PluggableTreeTableView objectsView;
115121
private ProfilerToolbar toolbar;
116122
private JComponent component;
@@ -132,35 +138,45 @@ public JavaDiffObjectsView(HeapContext context1, File file2, final boolean compa
132138

133139
final Heap heap = context1.getFragment().getHeap();
134140

135-
status = new ProgressNode(Bundle.JavaDiffObjectsView_LoadingProgress());
136-
new RequestProcessor("Compare Heap Dumps Worker").post(new Runnable() { // NOI18N
137-
public void run() { computeDiffClasses(heap, compareRetained); }
138-
});
141+
final TreeTableViewColumn countC = new TreeTableViewColumn.Count(heap);
142+
final TreeTableViewColumn sizeC = new TreeTableViewColumn.OwnSize(heap, true, true);
143+
final TreeTableViewColumn retainedC = compareRetained ? new TreeTableViewColumn.RetainedSize(heap) : null;
139144

140-
141145
TreeTableViewColumn[] columns = compareRetained ?
142146
new TreeTableViewColumn[] {
143147
new TreeTableViewColumn.Name(heap),
144148
// new TreeTableViewColumn.LogicalValue(heap),
145-
new TreeTableViewColumn.Count(heap),
146-
new TreeTableViewColumn.OwnSize(heap, true, true),
147-
new TreeTableViewColumn.RetainedSize(heap)
149+
countC,
150+
sizeC,
151+
retainedC
148152
} :
149153
new TreeTableViewColumn[] {
150154
new TreeTableViewColumn.Name(heap),
151155
// new TreeTableViewColumn.LogicalValue(heap),
152-
new TreeTableViewColumn.Count(heap),
153-
new TreeTableViewColumn.OwnSize(heap, true, true)
156+
countC,
157+
sizeC
154158
};
155159

156160
for (TreeTableViewColumn column : columns) {
157161
ProfilerRenderer renderer = column.getRenderer();
158-
if (renderer instanceof HideableBarRenderer) {
159-
HideableBarRenderer brenderer = (HideableBarRenderer)renderer;
160-
brenderer.setDiffMode(true);
161-
}
162+
if (renderer instanceof RelativeRenderer) ((RelativeRenderer)renderer).setDiffMode(true);
162163
}
163164

165+
status = new ProgressNode(Bundle.JavaDiffObjectsView_LoadingProgress());
166+
new RequestProcessor("Compare Heap Dumps Worker").post(new Runnable() { // NOI18N
167+
public void run() {
168+
computeDiffClasses(heap, compareRetained);
169+
SwingUtilities.invokeLater(new Runnable() {
170+
public void run() {
171+
((HideableBarRenderer)countC.getRenderer()).setMaxValue(maxDiffCount);
172+
((HideableBarRenderer)sizeC.getRenderer()).setMaxValue(maxDiffSize);
173+
if (compareRetained) ((HideableBarRenderer)retainedC.getRenderer()).setMaxValue(maxDiffRetained);
174+
if (objectsView != null) objectsView.getComponent().repaint();
175+
}
176+
});
177+
}
178+
});
179+
164180
objectsView = new PluggableTreeTableView("diff_java_objects", context1, actions, columns) { // NOI18N
165181
protected HeapViewerNode[] computeData(RootNode root, Heap heap, String viewID, HeapViewerNodeFilter viewFilter, List<DataType> dataTypes, List<SortOrder> sortOrders, Progress progress) {
166182
synchronized (statusLock) {
@@ -280,7 +296,7 @@ protected void fireItemStateChanged(ItemEvent e) {
280296
}
281297

282298

283-
private void computeDiffClasses(Heap heap, boolean compareRetained) {
299+
private void computeDiffClasses(Heap heap, final boolean compareRetained) {
284300
try {
285301
HeapViewer otherViewer = new HeapViewer(file2);
286302

@@ -292,6 +308,18 @@ private void computeDiffClasses(Heap heap, boolean compareRetained) {
292308
Heap diffHeap = otherContext.getFragment().getHeap();
293309
synchronized (statusLock) {
294310
diffClasses = JavaDiffClassesProvider.createDiffClasses(heap, diffHeap, compareRetained);
311+
312+
for (ClassNode node : diffClasses) {
313+
int count = Math.abs(node.getInstancesCount());
314+
maxDiffCount = Math.max(maxDiffCount, count);
315+
long size = Math.abs(node.getOwnSize());
316+
maxDiffSize = Math.max(maxDiffSize, size);
317+
if (compareRetained) {
318+
long retained = Math.abs(node.getRetainedSize(heap));
319+
maxDiffRetained = Math.max(maxDiffRetained, retained);
320+
}
321+
}
322+
295323
status = null;
296324
}
297325
objectsView.reloadView();

visualvm/sampler/src/com/sun/tools/visualvm/sampler/cpu/ThreadsCPUView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,9 @@ protected void popupHidden() {
246246
renderers = new HideableBarRenderer[2];
247247

248248
renderers[0] = new HideableBarRenderer(new NumberPercentRenderer(new McsTimeRenderer()));
249+
renderers[0].setBarDiffMode(HideableBarRenderer.BarDiffMode.MODE_BAR_NORMAL);
249250
renderers[1] = new HideableBarRenderer(new NumberPercentRenderer(new McsTimeRenderer()));
251+
renderers[1].setBarDiffMode(HideableBarRenderer.BarDiffMode.MODE_BAR_NORMAL);
250252

251253
LabelRenderer threadRenderer = new LabelRenderer();
252254
threadRenderer.setIcon(Icons.getIcon(ProfilerIcons.THREAD));

visualvm/sampler/src/com/sun/tools/visualvm/sampler/memory/ThreadsMemoryView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,9 @@ protected void popupHidden() {
253253
renderers = new HideableBarRenderer[2];
254254

255255
renderers[0] = new HideableBarRenderer(new NumberPercentRenderer(Formatters.bytesFormat()));
256+
renderers[0].setBarDiffMode(HideableBarRenderer.BarDiffMode.MODE_BAR_NORMAL);
256257
renderers[1] = new HideableBarRenderer(new NumberPercentRenderer(Formatters.bytesFormat()));
258+
renderers[1].setBarDiffMode(HideableBarRenderer.BarDiffMode.MODE_BAR_NORMAL);
257259

258260
LabelRenderer threadRenderer = new LabelRenderer();
259261
threadRenderer.setIcon(Icons.getIcon(ProfilerIcons.THREAD));

0 commit comments

Comments
 (0)