SkillAgentSearch skills...

Fireplace

Flamegraph (Iciclegraph) swing component

Install / Use

/learn @bric3/Fireplace
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

image:https://github.com/bric3/fireplace/actions/workflows/build.yml/badge.svg[Java CI with Gradle,link=https://github.com/bric3/fireplace/actions/workflows/build.yml] // image:https://snyk.io/test/github/bric3/fireplace/badge.svg?targetFile=build.gradle["Known Vulnerabilities", link="https://snyk.io/test/github/bric3/fireplace?targetFile=build.gradle.kts"] image:https://img.shields.io/maven-central/v/io.github.bric3.fireplace/fireplace-swing.svg["Maven Central", link="https://search.maven.org/artifact/io.github.bric3.fireplace/fireplace-swing"] image:https://img.shields.io/github/release/bric3/fireplace.svg?label=Github%20Release[Github Release,link=https://github.com/bric3/fireplace/releases/latest] image:https://img.shields.io/github/license/bric3/fireplace.svg[License]

== Flamegraph / Iciclegraph Java Swing component

++++ <picture> <source media="(prefers-color-scheme: dark)" srcset=".github/images/fireplace-dark.png"> <img alt="Shows a flamegraph in either light or dark mode" src=".github/images/fireplace-light.png"> </picture> ++++

This flamegraph component is known to be used in https://github.com/openjdk/jmc[JDK Mission Control 9.0] and in the https://docs.datadoghq.com/developers/ide_integrations/idea/[Datadog plugin for IntelliJ].

== Usage

.Example usage [source,java]

var flamegraphView = new FlamegraphView<Node>();

flamegraphView.setFrameRender( new DefaultFrameRenderer<>( 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 ) );

Earlier builds used to set up the view using setRenderConfiguration, this is deprecated for removal and code should be migrated to use setFrameRender instead.

== Configuration Options

[cols="1,2,1"] |=== |Method |Description |Default

|setMode(Mode) |Display mode: FLAMEGRAPH (root at bottom) or ICICLEGRAPH (root at top) |ICICLEGRAPH

|setFrameClickAction(FrameClickAction) |Click behavior: FOCUS_FRAME (double-click zooms) or EXPAND_FRAME (single-click expands) |FOCUS_FRAME

|setShowMinimap(boolean) |Show/hide the navigation minimap |true

|setShowHoveredSiblings(boolean) |Highlight identical frames elsewhere in the graph on hover |true

|setTooltipTextFunction(BiFunction) |Customize tooltip text for frames |—

|setPopupConsumer(BiConsumer) |Handle right-click context menu on frames |—

|setSelectedFrameConsumer(BiConsumer) |Callback when a frame is selected (single-click) |—

|setHoverListener(HoverListener) |Listen for frame hover events |—

|highlightFrames(Set, String) |Highlight frames matching a search |— |===

== Exporting to Image

Use FlamegraphImage to render a flamegraph to a static image (e.g., for export or reports).

== Misc

Snapshot versions will be delivered at

Maven Central Portal: https://central.sonatype.com/repository/maven-snapshots/[https://s01.oss.sonatype.org/content/repositories/snapshots/io/github/bric3/fireplace]

View on GitHub
GitHub Stars22
CategoryDevelopment
Updated3h ago
Forks5

Languages

Java

Security Score

95/100

Audited on Apr 7, 2026

No findings