This flamegraph component is known to be used in JDK Mission Control 9.0 and in the Datadog plugin for IntelliJ.
Example usage
var fg = new FlamegraphView<Node>();
flamegraphView.setRenderConfiguration(
FrameTextsProvider.of(
frame -> frame.isRoot() ? "root" : frame.actualNode.getFrame().getHumanReadableShortString(),
frame -> frame.isRoot() ? "" : FormatToolkit.getHumanReadable(frame.actualNode.getFrame().getMethod(), false, false, false, false, true, false),
frame -> frame.isRoot() ? "" : frame.actualNode.getFrame().getMethod().getMethodName()
),
new DimmingFrameColorProvider<>(defaultFrameColorMode.colorMapperUsing(ColorMapper.ofObjectHashUsing(defaultColorPalette.colors()))),
FrameFontProvider.defaultFontProvider()
);
jpanel.add(flamegraphView.component);
// later, fill in the data
var listOfFrames = FrameBox.flattenAndCalculateCoordinate(new ArrayList<Node>(), ...);
flamegraphView.setModel(
new FrameModel<>(
"title, events (CPU, Locks)", // used in the root "frame"
(a, b) -> Objects.equals(a, b), // used to identify equal frames
listOfFrames
)
);
Snapshot versions will be delivered at