RFR: 7894: Provide an alternative Java based flamegraph visualization [v12]

Alex Macdonald aptmac at openjdk.org
Thu Jun 8 15:40:02 UTC 2023


On Thu, 8 Jun 2023 15:09:28 GMT, Brice Dutheil <bdutheil at openjdk.org> wrote:

>> This change introduces a possible replacement for the current flamegraph view.
>> 
>> **Motivation**
>> The current is based on a web view. In the current state, 
>> - the web view can be slow to render especially when the tree is large.
>> - the web view don't feel well integrated, in particular when popups are shown.
>> - web view are difficult to work with from a JMC developer perspective.
>> 
>> ![image](https://user-images.githubusercontent.com/803621/177537938-423a4d53-c2ac-4c56-8583-abe4cc910e37.png)
>> 
>> **Description**
>> Concretely this PR relies on the swing component to render flamegraphs : https://github.com/bric3/fireplace. And plays with the bridge between SWT and AWT via the `SWT_AWT` class.
>> 
>> As the intent of this view is to eventually replace the current one, the icons are the same.
>> 
>> Since fireplace has no actual release, only snapshots, in order to try this PR, it is necessary to install the snapshot manually before starting the p2 server.
>> 
>> 
>> cd releng/third-party
>> 
>> mvn dependency:get -DrepoUrl=https://s01.oss.sonatype.org/content/repositories/snapshots -Dartifact=io.github.bric3.fireplace:fireplace-swing:0.0.1-SNAPSHOT:jar
>> 
>> # if sources are wanted
>> mvn dependency:get -DrepoUrl=https://s01.oss.sonatype.org/content/repositories/snapshots -Dartifact=io.github.bric3.fireplace:fireplace-swing:0.0.1-SNAPSHOT:jar:sources
>> 
>> # make the p2 site, don't forget the -U
>> mvn p2:site -U; mvn jetty:run
>> 
>> 
>> **Outstanding issues / limitation**
>> - [x] Fireplace has not yet a stable release as some part of its API are a bit rough.
>> - [x] Currently the view does not initializes correctly:
>>    the swing `JScrollPane` don't show scroll bars, until the view is resized by the user. I lack the SWT / Swing expertise to understand why at this time.
>>    https://github.com/bric3/fireplace/issues/79
>> - [x] Fireplace only supports _icicle_ view at this time.
>>    https://github.com/bric3/fireplace/issues/22
>> - [x] Icons for minimap toggle and zoom reset
>>    <img width="237" alt="image" src="https://user-images.githubusercontent.com/803621/183126781-07af0e94-a5d5-458c-97e3-a5e012177248.png">
>> - [x] Export to image
>>    https://github.com/bric3/fireplace/issues/99
>> - [x] Export to print ?
>>    Can be done at a later time
>> - [x] release of fireplace
>
> Brice Dutheil has updated the pull request incrementally with two additional commits since the last revision:
> 
>  - Bump copright year to 2023
>  - Use JavaSE-17

Hm, potentially disregard my review comment about the tooltip. It shows up when I launch JMC through Eclipse as an RCP application, but isn't showing up when run a locally built JMC.

application/org.openjdk.jmc.flightrecorder.flamegraph/src/main/java/org/openjdk/jmc/flightrecorder/flamegraph/views/FlamegraphSwingView.java line 423:

> 421: 
> 422: 		// done here to avoid SWT complain about wrong thread
> 423: 		var embedSize = embeddingComposite.getSize();

This variable isn't used anywhere

Er, disergard that too, just noticed the comment above it.

-------------

PR Comment: https://git.openjdk.org/jmc/pull/408#issuecomment-1582840054
PR Review Comment: https://git.openjdk.org/jmc/pull/408#discussion_r1223220739


More information about the jmc-dev mailing list