I was going through a fairly sizeable list of problems in Analyze|Inspect. I clicked on one node of problems ("Public inner class" if I remember correctly) and selected "Suppress Inspection". Idea then completely locked up, using 91% CPU, for about fifteen minutes. It then later (somewhat surprisingly) recovered. The amount of used memory didn't seem to have changed much if at all, so garbage collection doesn't seem like a likely explanation for this behavior (I am using 117 of 147 megs, with a limit of 384 megs). I am running on JDK 6, with DirectDraw enabled.
Thread dump (obtained via JDK 6 'jstack' utility since Idea was locked up) is:
2006-12-23 03:18:30
Full thread dump Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode):
"Error Icon Blinker" prio=6 tid=0x09882800 nid=0x1184 waiting on condition
[0x0a3af000..0x0a3afa94]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.diagnostic.IdeMessagePanel$Blinker.run(IdeMessagePanel.java:1)
Locked ownable synchronizers:
"Timer-1" prio=6 tid=0x0991cc00 nid=0xe60 in Object.wait()
[0x0d5af000..0x0d5afb14]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0x137e9308> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
Locked ownable synchronizers:
"EditorCaretThread" prio=6 tid=0x095b2800 nid=0xb14 waiting on condition
[0x0a58f000..0x0a58fb94]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.openapi.editor.impl.EditorImpl$RepaintCursorThread.run(EditorImpl.java:23)
Locked ownable synchronizers:
"pool-1-thread-1" prio=6 tid=0x095c8400 nid=0xb68 waiting on condition
[0x0a4ef000..0x0a4efc14]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x12255778> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1889)
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"pool-3-thread-1" prio=6 tid=0x096b8800 nid=0xb98 waiting on condition
[0x0a49f000..0x0a49fd94]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x126c8870> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1889)
at java.util.concurrent.DelayQueue.take(DelayQueue.java:160)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:582)
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:575)
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:946)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:906)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"UserActivityMonitor thread" prio=6 tid=0x040d0000 nid=0xa98 in Object.wait()
[0x0489f000..0x0489fd94]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at jetbrains.communicator.idea.monitor.UserActivityMonitor.run(UserActivityMonitor.java:129)
- locked <0x12665380> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"/66.245.145.136 IDEtalk Multicast Thread" prio=6 tid=0x041a2800 nid=0x89c runnable
[0x0a35f000..0x0a35fa14]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x127ff728> (a java.net.PlainDatagramSocketImpl)
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
- locked <0x127ff728> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:712)
- locked <0x127ff768> (a java.net.DatagramPacket)
- locked <0x127ff788> (a java.net.MulticastSocket)
at jetbrains.communicator.p2p.MulticastPingThread.run(MulticastPingThread.java:112)
Locked ownable synchronizers:
"User Monitor Thread" prio=6 tid=0x095c0c00 nid=0xa4c in Object.wait()
[0x0a30f000..0x0a30fa94]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at jetbrains.communicator.p2p.UserMonitorThread.waitForNextSearch(UserMonitorThread.java:212)
- locked <0x127ff858> (a java.lang.Object)
at jetbrains.communicator.p2p.UserMonitorThread.run(UserMonitorThread.java:131)
Locked ownable synchronizers:
"XML-RPC Weblistener" prio=6 tid=0x09618c00 nid=0xa80 runnable
[0x0a2bf000..0x0a2bfb14]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked <0x127ff8e8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.xmlrpc.WebServer.run(WebServer.java:453)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"Network Message Dispatcher" prio=6 tid=0x096e7400 nid=0x9ac in Object.wait()
[0x0a26f000..0x0a26fb94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x127ffa18> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at jetbrains.communicator.core.impl.dispatcher.AsyncMessageDispatcherImpl.run(AsyncMessageDispatcherImpl.java:76)
- locked <0x127ffa18> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"AlarmThread" prio=6 tid=0x040ab400 nid=0x834 in Object.wait()
[0x09dcf000..0x09dcfd94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x126c6160> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at com.intellij.util.Alarm$MyThread.run(Alarm.java:217)
- locked <0x126c6160> (a java.lang.Object)
Locked ownable synchronizers:
"Error Icon Blinker" prio=6 tid=0x04022c00 nid=0xdac waiting on condition
[0x0953f000..0x0953fc14]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.diagnostic.IdeMessagePanel$Blinker.run(IdeMessagePanel.java:8)
Locked ownable synchronizers:
"Fatal Errors Grouper" prio=6 tid=0x040e8800 nid=0xeec waiting on condition
[0x08acf000..0x08acfc94]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.diagnostic.MessagePool$MessageGrouper.run(MessagePool.java:5)
Locked ownable synchronizers:
"TimerQueue" daemon prio=6 tid=0x03f0e000 nid=0x4d4 in Object.wait()
[0x08a7f000..0x08a7fa14]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at javax.swing.TimerQueue.postExpiredTimers(TimerQueue.java:218)
- locked <0x124deac8> (a javax.swing.TimerQueue)
at javax.swing.TimerQueue.run(TimerQueue.java:234)
- locked <0x124deac8> (a javax.swing.TimerQueue)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"Exe4JStartupThread" daemon prio=6 tid=0x03fea800 nid=0xf0 waiting on condition
[0x03d4f000..0x03d4fb94]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.exe4j.Controller$StartupThread.run(Unknown Source)
Locked ownable synchronizers:
"StoreRefreshStatusThread" daemon prio=2 tid=0x03fce400 nid=0xedc waiting on condition
[0x03b8f000..0x03b8fd14]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl$StoreRefreshStatusThread.run(LocalFileSystemImpl.java:0)
Locked ownable synchronizers:
"WatchForChangesThread" prio=6 tid=0x03f9b800 nid=0x894 runnable
[0x036df000..0x036dfd94]
java.lang.Thread.State: RUNNABLE
at com.intellij.vfs.local.win32.FileWatcher.waitForChangeImpl(Native Method)
at com.intellij.vfs.local.win32.FileWatcher.waitForChange(FileWatcher.java:145)
at com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl$WatchForChangesThread.run(LocalFileSystemImpl.java:7)
Locked ownable synchronizers:
"Progress Cancel Checker" prio=6 tid=0x040e9400 nid=0xee0 waiting on condition
[0x00b9f000..0x00b9fa14]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$1.run(ProgressManagerImpl.java:3)
Locked ownable synchronizers:
"XML-RPC Weblistener" prio=6 tid=0x03f7e000 nid=0xfa0 runnable
[0x008ef000..0x008efa94]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked <0x1208fff0> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.apache.xmlrpc.WebServer.run(WebServer.java:453)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"AWT-EventQueue-1" prio=6 tid=0x03f81800 nid=0xc28 runnable
[0x049cf000..0x049cfb14]
java.lang.Thread.State: RUNNABLE
at javax.swing.tree.TreePath.getPathCount(TreePath.java:148)
at javax.swing.tree.TreePath.isDescendant(TreePath.java:238)
at javax.swing.JTree.getExpandedDescendants(JTree.java:1919)
at javax.swing.plaf.basic.BasicTreeUI.updateExpandedDescendants(BasicTreeUI.java:1667)
at javax.swing.plaf.basic.BasicTreeUI$Handler.treeExpanded(BasicTreeUI.java:3823)
at javax.swing.JTree.fireTreeExpanded(JTree.java:2661)
at javax.swing.JTree.setExpandedState(JTree.java:3432)
at javax.swing.JTree.expandPath(JTree.java:2168)
at com.intellij.codeInspection.ui.InspectionTree$ExpandListener$1.run(InspectionTree.java:2)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:11)
- locked <0x11fd48b0> (a java.lang.Object)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at com.intellij.ide.IdeEventQueue.b(IdeEventQueue.java:95)
at com.intellij.ide.IdeEventQueue.a(IdeEventQueue.java:11)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:133)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Locked ownable synchronizers:
"AWT-Shutdown" prio=6 tid=0x040e9800 nid=0x478 in Object.wait()
[0x0497f000..0x0497fb94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
- locked <0x11e31810> (a java.lang.Object)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"AlarmThread" prio=6 tid=0x03a75000 nid=0xa7c in Object.wait()
[0x0484f000..0x0484fa14]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at com.intellij.util.Alarm$MyThread.run(Alarm.java:217)
- locked <0x11f0a9a0> (a java.lang.Object)
Locked ownable synchronizers:
"AlarmThread" prio=6 tid=0x03f22800 nid=0xa64 in Object.wait()
[0x047ff000..0x047ffa94]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at com.intellij.util.Alarm$MyThread.run(Alarm.java:277)
- locked <0x11f0aa38> (a java.lang.Object)
Locked ownable synchronizers:
"Timer-0" daemon prio=6 tid=0x0326e000 nid=0x4b4 in Object.wait()
[0x047af000..0x047afb14]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.util.TimerThread.mainLoop(Timer.java:509)
- locked <0x11f0aab8> (a java.util.TaskQueue)
at java.util.TimerThread.run(Timer.java:462)
Locked ownable synchronizers:
"SocketListenerThread" prio=6 tid=0x03f10400 nid=0xbe4 runnable
[0x0435f000..0x0435fb94]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x11f0d2a8> (a java.net.PlainDatagramSocketImpl)
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
- locked <0x11f0d2a8> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:712)
- locked <0x11f0d2e8> (a java.net.DatagramPacket)
- locked <0x11f0d308> (a java.net.MulticastSocket)
at com.intellij.a.f.a.e.a(e.java:41)
at com.intellij.a.f.a.h.run(h.java:16)
Locked ownable synchronizers:
"SocketListenerThread" prio=6 tid=0x03a36800 nid=0x910 runnable
[0x0430f000..0x0430fc14]
java.lang.Thread.State: RUNNABLE
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
- locked <0x11f0fb00> (a java.net.PlainDatagramSocketImpl)
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
- locked <0x11f0fb00> (a java.net.PlainDatagramSocketImpl)
at java.net.DatagramSocket.receive(DatagramSocket.java:712)
- locked <0x11f0fb40> (a java.net.DatagramPacket)
- locked <0x11f0fb60> (a java.net.DatagramSocket)
at com.intellij.a.f.a.e.a(e.java:41)
at com.intellij.a.f.a.h.run(h.java:16)
Locked ownable synchronizers:
"MessageDeliveryThread" prio=6 tid=0x03a27400 nid=0xf68 in Object.wait()
[0x042bf000..0x042bfc94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x11f0fc10> (a java.lang.Object)
at java.lang.Object.wait(Object.java:485)
at com.intellij.a.f.r.run(r.java:5)
- locked <0x11f0fc10> (a java.lang.Object)
Locked ownable synchronizers:
"AWT-Windows" daemon prio=6 tid=0x03ad0400 nid=0x240 runnable
[0x03cff000..0x03cffd94]
java.lang.Thread.State: RUNNABLE
at sun.awt.windows.WToolkit.eventLoop(Native Method)
at sun.awt.windows.WToolkit.run(WToolkit.java:290)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"Java2D Disposer" daemon prio=10 tid=0x03ace400 nid=0x178 in Object.wait()
[0x03c5f000..0x03c5fa94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x11e05b18> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at sun.java2d.Disposer.run(Disposer.java:125)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"Lock thread" prio=6 tid=0x03977400 nid=0xfa8 runnable
[0x03bdf000..0x03bdfb14]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked <0x11e05bf8> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at com.intellij.idea.SocketLock$MyRunnable.run(SocketLock.java:1)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"Exe4JStartupThread" daemon prio=6 tid=0x03905000 nid=0xc34 waiting on condition
[0x03b3f000..0x03b3fc14]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.exe4j.Controller$StartupThread.run(Unknown Source)
Locked ownable synchronizers:
"Low Memory Detector" daemon prio=6 tid=0x032a1c00 nid=0x838 runnable
[0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"CompilerThread0" daemon prio=10 tid=0x0329d800 nid=0x48c waiting on condition
[0x00000000..0x0384f61c]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"YJPAgent-CPUSampler" daemon prio=6 tid=0x0329cc00 nid=0x810 runnable
[0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"YJPAgent-RequestListener" daemon prio=2 tid=0x0329b800 nid=0xe58 runnable
[0x037af000..0x037afa94]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
- locked <0x11d90368> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:450)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at com.yourkit.runtime.Core$2.run(Core.java:320)
at java.lang.Thread.run(Thread.java:619)
Locked ownable synchronizers:
"YJPAgent-Telemetry" daemon prio=2 tid=0x03299c00 nid=0x4fc waiting on condition
[0x0375f000..0x0375fb14]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at com.yourkit.runtime.telemetry.TelemetryThread.run(TelemetryThread.java:272)
Locked ownable synchronizers:
"Attach Listener" daemon prio=10 tid=0x0327a800 nid=0x8e4 waiting on condition
[0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"Signal Dispatcher" daemon prio=10 tid=0x03279800 nid=0xed4 runnable
[0x00000000..0x00000000]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"Finalizer" daemon prio=8 tid=0x03266000 nid=0xb74 in Object.wait()
[0x035df000..0x035dfc94]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)
- locked <0x11d905f8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
Locked ownable synchronizers:
"Reference Handler" daemon prio=10 tid=0x03261800 nid=0x694 in Object.wait()
[0x0358f000..0x0358fd14]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <0x11d90100> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
"main" prio=6 tid=0x00b27400 nid=0xde8 waiting on condition
[0x00000000..0x0007bc48]
java.lang.Thread.State: RUNNABLE
Locked ownable synchronizers:
"VM Thread" prio=10 tid=0x0325c800 nid=0xf60 runnable
"VM Periodic Task Thread" prio=10 tid=0x032b4800 nid=0x9c waiting on condition
JNI global references: 2391