-
Notifications
You must be signed in to change notification settings - Fork 46
Description
Not sure if this is the right channel to report this, but what the heck - I'll try it :).
Analyzing a Java 11 recorded .jfr using Zulu Mission Control 7 EA, which is (to my understanding) merely a packaging of the open JMC project, shows an extremely high UI lag (freeze) - in the 10s of seconds - when switching to the Threads view. I captured the stacktrace of JMC during the UI freeze, and it's almost always something along these lines:
"main" #1 prio=6 os_prio=0 cpu=133712.13ms elapsed=502.88s tid=0x000000000093e000 nid=0x5632 runnable [0x00007f0c242dc000]
java.lang.Thread.State: RUNNABLE
at java.util.stream.Sink$ChainedReference.cancellationRequested(java.base@11.0.3/Sink.java:263)
at java.util.stream.Sink$ChainedReference.cancellationRequested(java.base@11.0.3/Sink.java:263)
at java.util.stream.Sink$ChainedReference.cancellationRequested(java.base@11.0.3/Sink.java:263)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(java.base@11.0.3/StreamSpliterators.java:206)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(java.base@11.0.3/StreamSpliterators.java:169)
at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(java.base@11.0.3/StreamSpliterators.java:300)
at java.util.stream.ReferencePipeline$7$1.accept(java.base@11.0.3/ReferencePipeline.java:278)
at java.util.Spliterators$ArraySpliterator.tryAdvance(java.base@11.0.3/Spliterators.java:958)
at java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(java.base@11.0.3/StreamSpliterators.java:294)
at java.util.stream.StreamSpliterators$WrappingSpliterator$$Lambda$509/0x00000008007bf040.getAsBoolean(java.base@11.0.3/Unknown Source)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(java.base@11.0.3/StreamSpliterators.java:206)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(java.base@11.0.3/StreamSpliterators.java:169)
at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(java.base@11.0.3/StreamSpliterators.java:300)
at java.util.stream.StreamSpliterators$WrappingSpliterator.lambda$initPartialTraversalState$0(java.base@11.0.3/StreamSpliterators.java:294)
at java.util.stream.StreamSpliterators$WrappingSpliterator$$Lambda$509/0x00000008007bf040.getAsBoolean(java.base@11.0.3/Unknown Source)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.fillBuffer(java.base@11.0.3/StreamSpliterators.java:206)
at java.util.stream.StreamSpliterators$AbstractWrappingSpliterator.doAdvance(java.base@11.0.3/StreamSpliterators.java:161)
at java.util.stream.StreamSpliterators$WrappingSpliterator.tryAdvance(java.base@11.0.3/StreamSpliterators.java:300)
at java.util.Spliterators$1Adapter.hasNext(java.base@11.0.3/Spliterators.java:681)
at org.openjdk.jmc.flightrecorder.ui.common.ThreadGraphLanes.threadRanges(ThreadGraphLanes.java:167)
at org.openjdk.jmc.flightrecorder.ui.common.ThreadGraphLanes.buildThreadRenderer(ThreadGraphLanes.java:145)
at org.openjdk.jmc.flightrecorder.ui.pages.ThreadsPage$ThreadsPageUi.lambda$2(ThreadsPage.java:202)
at org.openjdk.jmc.flightrecorder.ui.pages.ThreadsPage$ThreadsPageUi$$Lambda$703/0x0000000800882040.apply(Unknown Source)
at org.openjdk.jmc.flightrecorder.ui.common.ItemHistogram$HistogramSelection.lambda$2(ItemHistogram.java:223)
at org.openjdk.jmc.flightrecorder.ui.common.ItemHistogram$HistogramSelection$$Lambda$704/0x0000000800882440.apply(Unknown Source)
at java.util.stream.ReferencePipeline$3$1.accept(java.base@11.0.3/ReferencePipeline.java:195)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(java.base@11.0.3/ArrayList.java:1654)
at java.util.stream.AbstractPipeline.copyInto(java.base@11.0.3/AbstractPipeline.java:484)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@11.0.3/AbstractPipeline.java:474)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(java.base@11.0.3/ReduceOps.java:913)
at java.util.stream.AbstractPipeline.evaluate(java.base@11.0.3/AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(java.base@11.0.3/ReferencePipeline.java:578)
at org.openjdk.jmc.flightrecorder.ui.pages.ThreadsPage$ThreadsPageUi.getChartRenderer(ThreadsPage.java:203)
at org.openjdk.jmc.flightrecorder.ui.pages.ChartAndTableUI.buildChart(ChartAndTableUI.java:207)
at org.openjdk.jmc.flightrecorder.ui.pages.ChartAndTableUI.lambda$0(ChartAndTableUI.java:116)
at org.openjdk.jmc.flightrecorder.ui.pages.ChartAndTableUI$$Lambda$587/0x000000080082e040.selectionChanged(Unknown Source)
at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:155)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:44)
at org.eclipse.ui.internal.JFaceUtil$$Lambda$136/0x000000080033e840.run(Unknown Source)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:152)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2179)
at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1716)
at org.eclipse.jface.viewers.TableViewer.setSelection(TableViewer.java:162)
at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:380)
at org.openjdk.jmc.ui.column.ColumnManager.setSelectionState(ColumnManager.java:599)
at org.openjdk.jmc.flightrecorder.ui.pages.ThreadsPage$ThreadsPageUi.<init>(ThreadsPage.java:173)
at org.openjdk.jmc.flightrecorder.ui.pages.ThreadsPage.display(ThreadsPage.java:256)
at org.openjdk.jmc.flightrecorder.ui.JfrEditor.displayPage(JfrEditor.java:232)
at org.openjdk.jmc.flightrecorder.ui.JfrEditor.navigateTo(JfrEditor.java:216)
at org.openjdk.jmc.flightrecorder.ui.JfrOutlinePage.selectionChanged(JfrOutlinePage.java:449)
at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:155)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil.lambda$0(JFaceUtil.java:44)
at org.eclipse.ui.internal.JFaceUtil$$Lambda$136/0x000000080033e840.run(Unknown Source)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at org.eclipse.jface.viewers.Viewer.fireSelectionChanged(Viewer.java:152)
at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2179)
at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1222)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1251)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:240)
at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:235)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:400)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5686)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1370)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4940)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4518)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1170)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1059)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:667)
at org.eclipse.ui.internal.Workbench$$Lambda$168/0x00000008003ba840.run(Unknown Source)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:597)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at org.openjdk.jmc.rcp.application.Application.start(Application.java:64)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.3/Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.3/NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.3/DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(java.base@11.0.3/Method.java:566)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:656)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:592)
at org.eclipse.equinox.launcher.Main.run(Main.java:1498)
at org.eclipse.equinox.launcher.Main.main(Main.java:1471)
JMC was being run on AdoptOpenJDK 11.0.3 on Linux.
Has anyone seen/experienced something similar? Exporting the Threads view to a csv, once loaded, yields about 7000 rows. The JFR file itself is a few hundred MB. I don't remember the old JMC (bundled with Oracle JDK), up to Java 8, having similar problems.
I'm happy to provide any additional info.
Thanks!