Skip to content

[HeapViewer] Slow computation of threads view #474

Description

@thurka

When heap dump have a lot of "JNI local" GC roots (>8 millions), the computation of Threads view is slow.

Most of the time is spent in org.graalvm.visualvm.heapviewer.java.impl.Bundle.JavaThreadsProvider_JniLocal()

"SwingWorker-pool-3-thread-2" #40 daemon prio=5 os_prio=31 tid=0x00007f80919ad800 nid=0x16927 runnable [0x000070000379e000]
   java.lang.Thread.State: RUNNABLE
	at org.openide.util.NbBundle.getBundleFast(NbBundle.java:502)
	- locked <0x00000007413f6210> (a java.util.HashMap)
	at org.openide.util.NbBundle.getBundle(NbBundle.java:433)
	at org.openide.util.NbBundle.getBundle(NbBundle.java:386)
	at org.openide.util.NbBundle.getMessage(NbBundle.java:637)
	at org.graalvm.visualvm.heapviewer.java.impl.Bundle.JavaThreadsProvider_JniLocal(Bundle.java:1339)
	at org.graalvm.visualvm.heapviewer.java.impl.JavaThreadsProvider.getThreadsNodes(JavaThreadsProvider.java:171)
	at org.graalvm.visualvm.heapviewer.java.impl.JavaThreadsView$1.computeData(JavaThreadsView.java:115)
	at org.graalvm.visualvm.heapviewer.ui.TreeTableView$1.lazilyComputeChildren(TreeTableView.java:147)
	at org.graalvm.visualvm.heapviewer.model.HeapViewerNode$1.doInBackground(HeapViewerNode.java:180)
	at org.graalvm.visualvm.heapviewer.model.HeapViewerNode$1.doInBackground(HeapViewerNode.java:166)
	at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at javax.swing.SwingWorker.run(SwingWorker.java:334)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions