# How to use JProfiler (or other tools) to trouble shoot non-responsive UI threads?

**URL:** <https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293>\
**Category:** Ignition\
**Tags:** ignition81, vision\
**Created:** [November 6, 2024, 5:52pm UTC](https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293 "2024-11-06T17:52:48Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [November 6, 2024, 5:52pm UTC](https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293/1 "2024-11-06T17:52:48Z")

</div>

I have a button that opens a popup window. It opens it with a single 'id' parameter, used in a named query, which runs with a good execution plan (the id is the primary key). Minimal scripting on the window etc, but every time the window attempts to open - there is a 3-4 second pause and I get a nonresponsive-edt file. Here's the latest -  
[NonResponsiveEdt-2024-11-06\_124452.json](https://forum.inductiveautomation.com/uploads/short-url/iXtv3Ng122bL115VMKfT5GxFJV8.json) (52.0 KB)

I have the evaluation version of JProfiler and am able to attach it to my running vision instance. What exactly would I want to be doing with it to try to troubleshoot this? Thread dump right after the button click/unresponsiveness?

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 6, 2024, 5:55pm UTC](https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293/2 "2024-11-06T17:55:05Z")

</div>

The stack trace for the EDT thread points to the file explorer component loading an icon from the filesystem being the culprit:

```python
java.base@17.0.12/jdk.internal.misc.Unsafe.park(Native Method)
java.base@17.0.12/java.util.concurrent.locks.LockSupport.park(Unknown Source)
java.base@17.0.12/java.util.concurrent.FutureTask.awaitDone(Unknown Source)
java.base@17.0.12/java.util.concurrent.FutureTask.get(Unknown Source)
java.desktop@17.0.12/sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Source)
java.desktop@17.0.12/sun.awt.shell.ShellFolder.invoke(Unknown Source)
java.desktop@17.0.12/sun.awt.shell.ShellFolder.invoke(Unknown Source)
java.desktop@17.0.12/sun.awt.shell.Win32ShellFolder2.getIcon(Unknown Source)
java.desktop@17.0.12/javax.swing.filechooser.FileSystemView.getSystemIcon(Unknown Source)
com.inductiveautomation.factorypmi.plugins.reporting.components.FileExplorer$FilesystemTreeNode.getIcon(FileExplorer.java:269)
com.inductiveautomation.factorypmi.plugins.reporting.components.FileExplorer$FileNodeRenderer.getTreeCellRendererComponent(FileExplorer.java:436)
java.desktop@17.0.12/javax.swing.plaf.basic.BasicTreeUI$NodeDimensionsHandler.getNodeDimensions(Unknown Source)
java.desktop@17.0.12/javax.swing.tree.AbstractLayoutCache.getNodeDimensions(Unknown Source)
java.desktop@17.0.12/javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize(Unknown Source)

```

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [November 6, 2024, 5:57pm UTC](https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293/3 "2024-11-06T17:57:51Z")

</div>

> [@bkarabinchak.psi](#):
>
> What exactly would I want to be doing with it to try to troubleshoot this? Thread dump right after the button click/unresponsiveness?

You'd want to make sure you're in instrumentation mode, as opposed to sampling, and then attach and start CPU recording. Then do the thing that is slow. Then stop recording, and look at the CPU view and see what was slow (hopefully).

---

<div class="post-metadata">

**Author:** ![bkarabinchak.psi](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bkarabinchak.psi/32/83567_2.png) [@bkarabinchak.psi](https://forum.inductiveautomation.com/u/bkarabinchak.psi)\
**Post date:** [November 6, 2024, 6:21pm UTC](https://forum.inductiveautomation.com/t/how-to-use-jprofiler-or-other-tools-to-trouble-shoot-non-responsive-ui-threads/98293/4 "2024-11-06T18:21:01Z")

</div>

Thanks that is good to now - I have other bottle neck areas I need to do that on. However, your first answer was exactly the issue - apparently this window has a file tree component hidden and loading every window open, no wonder it was slow.
