About Pierre Hugues Charbonneau

Pierre-Hugues Charbonneau (nickname P-H) is working for CGI Inc. Canada for the last 10 years as a senior IT consultant. His primary area of expertise is Java EE, middleware & JVM technologies. He is a specialist in production system troubleshooting, root cause analysis, middleware, JVM tuning, scalability and capacity improvement; including internal processes improvement for IT support teams. P-H is the principal author at Java EE Support Patterns.

JVM: How to analyze Thread Dump

This article will teach you how to analyze a JVM Thread Dump and pinpoint the root cause of your problem(s). From my perspective, Thread Dump analysis is the most important skillset to master for any individual involved in Java EE production support. The amount of information that you can derive from Thread Dump snapshots is often much beyond than what you can think of.

My goal is to share with you my knowledge on Thread Dump analysis that I accumulated over the last 10 years e.g. hundreds of Thread Dump analysis cycles with dozens of common problem patterns across many JVM versions and JVM vendors.

Please bookmark this page and stay tuned for weekly articles. Please also feel free to share this Thread Dump training plan with your work colleagues and friends.

Sounds good, I really need to improve my Thread Dump skills… so where do we start?

What I’m proposing to you is a complete Thread Dump training plan. The following items will be covered. I will also provide you with real life Thread Dump examples that you can study and understand.

I really hope this Thread Dump analysis training plan will be beneficial for you so please stay tuned for weekly updates and articles!

But what if I still have questions or still struggling to understand these training articles?

Don’t worry and please consider me as your trainer. I strongly encourage you to ask me any question on Thread Dump (remember, there are no stupid questions) so I propose the following options to you for free; simply chose the communication model that you are more comfortable with:

Can I send you my Thread Dump data from my production environment / servers?

Yes, please feel free to send me your generated Thread Dump data via email or Root Cause Analysis forum if you wish to discuss the root cause of your problem(s). Real life Thread Dump analysis is always the best way to learn.

I really hope that you will enjoy and share this Thread Dump analysis training plan. I will do my very best to provide you with quality material and answers to any question.

Before going deeper into Thread Dump analysis and problem patterns, it is very important that you understand the fundamentals. The post will cover the basics and allow you to better your JVM and middleware interaction with your Java EE container.

Java VM overview

The Java virtual machine is really the foundation of any Java EE platform. This is where your middleware and applications are deployed and active.

Find below a diagram showing you a high level interaction view between the JVM, middleware and application(s).

This is showing you a typical and simple interaction diagram between the JVM, middleware and application. As you can see, the Threads allocation for a standard Java EE application are done mainly between the middleware kernel itself and JVM (there are some exceptions when application itself or some APIs create Threads directly but this is not common and must be done very carefully).

Also, please note that certain Threads are managed internally within the JVM itself such as GC (garbage collection) Threads in order to handle concurrent garbage collections.

Since most of the Thread allocations are done by the Java EE container, it is important that you understand and recognize the Thread Stack Trace and identify it properly from the Thread Dump data. This will allow you to understand quickly the type of request that the Java EE container is attempting to execute.

From a Thread Dump analysis perspective, you will learn how to differentiate between the different Thread Pools found from the JVM and identify the request type.

This last section will provide you with an overview of what is a JVM Thread Dump for the HotSpot VM and the different Threads that you will find. Detail for the IBM VM Thread Dump format will be provided in the part 4.

– Java Thread Stack Trace; this is by far the most important data that you will find from the Thread Dump. This is also where you will spent most of your analysis time since the Java Stack Trace provides you with 90% of the information that you need in order to pinpoint root cause of many problem pattern types as you will learn later in the training sessions

– Java Heap breakdown; starting with HotSpot VM 1.6, you will also find at the bottom of the Thread Dump snapshot a breakdown of the HotSpot memory spaces utilization such as your Java Heap (YoungGen, OldGen) & PermGen space. This is quite useful when excessive GC is suspected as a possible root cause so you can do out-of-the-box correlation with Thread data / patterns found

In order for you to better understand, find below a diagram showing you a visual breakdown of a HotSpot VM Thread Dump and its common Thread Pools found:

As you can there are several pieces of information that you can find from a HotSpot VM Thread Dump. Some of these pieces will be more important than others depending of your problem pattern(problem patterns will be simulated and explained in future articles).

For now, find below a detailed explanation for each Thread Dump section as per our sample HotSpot Thread Dump:

# Full thread dump identifier This is basically the unique keyword that you will find in your middleware / standalong Java standard output log once you generate a Thread Dump (ex: via kill -3 <PID> for UNIX). This is the beginning of the Thread Dump snapshot data.

# Java EE middleware, third party & custom application Threads This portion is the core of the Thread Dump and where you will typically spend most of your analysis time. The number of Threads found will depend on your middleware software that you use, third party libraries (that might have its own Threads) and your application (if creating any custom Thread, which is generally not a best practice).

In our sample Thread Dump, Weblogic is the middleware used. Starting with Weblogic 9.2, a self-tuning Thread Pool is used with unique identifier “’weblogic.kernel.Default (self-tuning)”

# HotSpot VM Thread This is an internal Thread managed by the HotSpot VM in order to perform internal native operations. Typically you should not worry about this one unless you see high CPU(via Thread Dump & prstat / native Thread id correlation).

# HotSpot GC Thread When using HotSpot parallel GC (quite common these days when using multi physical cores hardware), the HotSpot VM create by default or as per your JVM tuning a certain # of GC Threads. These GC Threads allow the VM to perform its periodic GC cleanups in a parallel manner, leading to an overall reduction of the GC time; at the expense of increased CPU utilization.

This is crucial data as well since when facing GC related problems such as excessive GC, memory leaks etc, you will be able to correlate any high CPU observed from the OS / Java process(es) with these Threads using their native id value (nid=0x3). You will learn how to identify and confirm this problem is future articles.

# JNI global references count JNI (Java Native Interface) global references are basically Object references from the native code to a Java object managed by the Java garbage collector. Its role is to prevent collection of an object that is still in use by native code but technically with no “live” references in the Java code.

It is also important to keep an eye on JNI references in order to detect JNI related leaks. This can happen if you program use JNI directly or using third party tools like monitoring tools which are prone to native memory leaks.

JNI global references: 1925

# Java Heap utilization view This data was added back to JDK 1 .6 and provides you with a short and fast view of your HotSpot Heap. I find it quite useful when troubleshooting GC related problems along with HIGH CPU since you get both Thread Dump & Java Heap in a single snapshot allowing you to determine (or to rule out) any pressure point in a particular Java Heap memory space along with current Thread computing currently being done at that time. As you can see in our sample Thread Dump, the Java Heap OldGen is maxed out!

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design

and many more ....

19 comments

Please note that I will release the next series shortly which will include Thread Dump Stack Trace analysis approach and common problem patterns that will be available to share on Java Code Geeks. Thread Dump analysis complexity is often due to so many different problem patterns so this should really help any Java / Java EE individual involved in either application support or development (load testing etc.) to identify such patterns more quickly. This series will also include data correlation techniques; especially for problems related to high CPU, excessive garbage collection etc.

I’m also looking forward for any feedback and “wish list” of what aspect of Thread Dump analysis you want more detail on.

This “JVM: How to analyze Thread Dump” article of your is ridiculously similar to “How to Analyze Java Thread Dumps” http://www.cubrid.org/blog/dev-platform/how-to-analyze-java-thread-dumps/ published couple months ago by CUBRID developers on their official blog. I strongly believe these two should go together hand in hand as they mutually supportive. Great article, by the way!

My application is running in tomcat. If the server is running for many days without restarting tomcat, we face a problem as the server CPU usage will go above 100% very frequently and come back to normal immediately. By the time, we take thread dump, it come back to normal. However on continuous observation it is found that the high cpu usage nid is pointing to a line in thread dump

It is likely that your problem is related to a major GC collection. You have quite a few GC threads created, I would recommend to verify if the increased CPU is due to GC threads performing excessive garbage collection, typical during a major collection. With 16 GC threads concurrently , this can significantly impact CPU utilization until the memory is fully reclaimed.

The CMS collector has the tendency to fragment over time, at some point requiring a major collection which can trigger quite a large surge of your CPU utilization.

One more recommendation, enable -verbose:gc or use JVisualVM to monitor your heap utilization. This will help you correlate the GC process with your CPU utilization spikes.

“main” prio=10 tid=0x00007f7ef8015000 nid=0x1fe5 in Object.wait() [0x00007f7effd87000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) – waiting on (a org.apache.hadoop.hbase.ipc.RpcClient$Call) at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1435) – locked (a org.apache.hadoop.hbase.ipc.RpcClient$Call) at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1653) at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1711) at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$BlockingStub.scan(ClientProtos.java:27332) at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:168) at org.apache.hadoop.hbase.client.ScannerCallable.call(ScannerCallable.java:57) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:120) – locked (a org.apache.hadoop.hbase.client.RpcRetryingCaller) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:96) – locked (a org.apache.hadoop.hbase.client.RpcRetryingCaller) at org.apache.hadoop.hbase.client.ClientScanner.next(ClientScanner.java:336) at org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.nextKeyValue(TableRecordReaderImpl.java:194) at org.apache.hadoop.hbase.mapreduce.TableRecordReader.nextKeyValue(TableRecordReader.java:138) at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:483) at org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:76) at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:85) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:139) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330) at org.apache.hadoop.mapred.Child$4.run(Child.java:268) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548) at org.apache.hadoop.mapred.Child.main(Child.java:262)

i cross checked everything like Memory, CPU etc. Everything looks good. Moreover, i can see in Thread status there were some threads on “Waiting on Condition” some threads were “Blocked”. Could you please suggest me what excatly i need to investigate it over come this issue with “Waiting on Condition” and Blocked state.

Hi Pierre I am running grails 2.1.0 with JDK1.7.0 on a Windows 7(64Bit) OS. I try to run the command line and I get the following

Exception: java.lang.RuntimeException thrown from the UncaughtExceptionHandler i n thread “main”

here is the thread dump

“AWT-EventQueue-0 14.0.5#IU-139.1803.20, eap:false” prio=0 tid=0x0 nid=0x0 runnable java.lang.Thread.State: RUNNABLE (in native) at java.util.zip.ZipFile.read(Native Method) at java.util.zip.ZipFile.access$1400(ZipFile.java:60) at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:716) at com.intellij.openapi.util.io.FileUtilRt.loadBytes(FileUtilRt.java:496) at com.intellij.openapi.util.io.FileUtil.loadBytes(FileUtil.java:1469) at com.intellij.util.lang.MemoryResource.load(MemoryResource.java:75) at com.intellij.util.lang.JarLoader.getResource(JarLoader.java:102) at com.intellij.util.lang.ClassPath$ResourceStringLoaderIterator.process(ClassPath.java:279) at com.intellij.util.lang.ClassPath$ResourceStringLoaderIterator.process(ClassPath.java:269) at com.intellij.util.lang.ClasspathCache.iterateLoaders(ClasspathCache.java:112) at com.intellij.util.lang.ClassPath.getResource(ClassPath.java:82) at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:164) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at com.intellij.psi.impl.source.JavaFileElementType.createNode(JavaFileElementType.java:65) at com.intellij.lang.ASTFactory.lazy(ASTFactory.java:57) at com.intellij.psi.impl.source.PsiFileImpl.createContentLeafElement(PsiFileImpl.java:110) at com.intellij.psi.impl.source.PsiFileImpl.createFileElement(PsiFileImpl.java:358) at com.intellij.psi.impl.source.PsiFileImpl.b(PsiFileImpl.java:192) at com.intellij.psi.impl.source.PsiFileImpl.getTreeElement(PsiFileImpl.java:125) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:749) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:959) at com.intellij.psi.stubs.LightStubBuilder.buildStubTree(LightStubBuilder.java:50) at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:81) at com.intellij.psi.stubs.StubTreeLoaderImpl.readOrBuild(StubTreeLoaderImpl.java:58) at com.intellij.psi.impl.source.PsiFileImpl.getStubTree(PsiFileImpl.java:684) at com.intellij.psi.impl.source.PsiFileImpl.getStub(PsiFileImpl.java:658) at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.getClasses(PsiJavaFileBaseImpl.java:89) at com.intellij.core.CoreJavaDirectoryService.getClasses(CoreJavaDirectoryService.java:59) at com.intellij.psi.impl.PsiElementFinderImpl.getClasses(PsiElementFinderImpl.java:102) at com.intellij.psi.impl.PsiElementFinderImpl.getClasses(PsiElementFinderImpl.java:93) at com.intellij.psi.impl.JavaPsiFacadeImpl.getClasses(JavaPsiFacadeImpl.java:229) at com.intellij.psi.impl.file.PsiPackageImpl.getClasses(PsiPackageImpl.java:154) at com.intellij.psi.impl.file.PsiPackageImpl.b(PsiPackageImpl.java:207) at com.intellij.psi.impl.file.PsiPackageImpl.a(PsiPackageImpl.java:185) at com.intellij.psi.impl.file.PsiPackageImpl.containsClassNamed(PsiPackageImpl.java:222) at com.intellij.psi.impl.JavaPsiFacadeImpl.a(JavaPsiFacadeImpl.java:118) at com.intellij.psi.impl.JavaPsiFacadeImpl.findClasses(JavaPsiFacadeImpl.java:129) at org.jetbrains.plugins.groovy.mvc.MvcFramework.findCoreJar(MvcFramework.java:235) at org.jetbrains.plugins.grails.config.GrailsFramework.getSdkRoot(GrailsFramework.java:354) at org.jetbrains.plugins.groovy.grails.GrailsInstallationCommandExecutor.isApplicable(GrailsInstallationCommandExecutor.java:34) at org.jetbrains.plugins.grails.util.GrailsUtils.getGrailsExecutor(GrailsUtils.java:245) at org.jetbrains.plugins.grails.util.GrailsUtils.hasSupport(GrailsUtils.java:235) at org.jetbrains.plugins.grails.config.GrailsFramework.hasSupport(GrailsFramework.java:94) at org.jetbrains.plugins.groovy.mvc.MvcModuleStructureUtil.hasModulesWithSupport(MvcModuleStructureUtil.java:439) at org.jetbrains.plugins.groovy.mvc.projectView.MvcToolWindowDescriptor.value(MvcToolWindowDescriptor.java:65) at org.jetbrains.plugins.groovy.mvc.projectView.MvcToolWindowDescriptor.value(MvcToolWindowDescriptor.java:42) at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.g(ToolWindowManagerImpl.java:479) at com.intellij.openapi.wm.impl.ToolWindowManagerImpl.access$1800(ToolWindowManagerImpl.java:88) at com.intellij.openapi.wm.impl.ToolWindowManagerImpl$9.run(ToolWindowManagerImpl.java:439) at com.intellij.ide.startup.impl.StartupManagerImpl.b(StartupManagerImpl.java:303) at com.intellij.ide.startup.impl.StartupManagerImpl.a(StartupManagerImpl.java:295) at com.intellij.ide.startup.impl.StartupManagerImpl.runPostStartupActivities(StartupManagerImpl.java:174) at com.intellij.openapi.project.impl.ProjectManagerImpl$8$2.run(ProjectManagerImpl.java:477) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756) at java.awt.EventQueue.access$500(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:709) at java.awt.EventQueue$3.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:726) at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:748) at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:577) at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:384) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

“ApplicationImpl pooled thread 8” prio=0 tid=0x0 nid=0x0 runnable java.lang.Thread.State: RUNNABLE (in native) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278) at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:621) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:309) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:834) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“ApplicationImpl pooled thread 6” prio=0 tid=0x0 nid=0x0 runnable java.lang.Thread.State: RUNNABLE (in native) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method) at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(WindowsSelectorImpl.java:296) at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(WindowsSelectorImpl.java:278) at sun.nio.ch.WindowsSelectorImpl.doSelect(WindowsSelectorImpl.java:159) at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86) at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97) at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:621) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:309) at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:834) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

at sun.management.ThreadImpl.dumpThreads0(Native Method) at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446) at com.intellij.diagnostic.ThreadDumper.dumpThreadsToFile(ThreadDumper.java:49) at com.intellij.diagnostic.PerformanceWatcher.dumpThreads(PerformanceWatcher.java:225) at com.intellij.diagnostic.PerformanceWatcher.c(PerformanceWatcher.java:178) at com.intellij.diagnostic.PerformanceWatcher.access$100(PerformanceWatcher.java:40) at com.intellij.diagnostic.PerformanceWatcher$2.run(PerformanceWatcher.java:117) at java.lang.Thread.run(Thread.java:745)

“ApplicationImpl pooled thread 1” prio=0 tid=0x0 nid=0x0 runnable java.lang.Thread.State: RUNNABLE (in native) at java.lang.ProcessImpl.waitForInterruptibly(Native Method) at java.lang.ProcessImpl.waitFor(ProcessImpl.java:449) at com.intellij.execution.process.ProcessWaitFor$1.run(ProcessWaitFor.java:30) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“Encoding detection thread” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1081) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“ApplicationImpl pooled thread 11” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on [email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460) at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362) at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

at java.lang.Thread.sleep(Native Method) at sun.net.www.http.KeepAliveCache.run(KeepAliveCache.java:172) at java.lang.Thread.run(Thread.java:745)

“ApplicationImpl pooled thread 10” prio=0 tid=0x0 nid=0x0 blocked java.lang.Thread.State: BLOCKED on [email protected] owned by “AWT-EventQueue-0 14.0.5#IU-139.1803.20, eap:false” Id=21 at com.intellij.psi.impl.source.JavaFileElementType.createNode(JavaFileElementType.java:65) at com.intellij.lang.ASTFactory.lazy(ASTFactory.java:57) at com.intellij.psi.impl.source.PsiFileImpl.createContentLeafElement(PsiFileImpl.java:110) at com.intellij.psi.impl.source.PsiFileImpl.createFileElement(PsiFileImpl.java:358) at com.intellij.psi.impl.source.PsiFileImpl.b(PsiFileImpl.java:192) at com.intellij.psi.impl.source.PsiFileImpl.getTreeElement(PsiFileImpl.java:125) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:749) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:959) at com.intellij.psi.stubs.LightStubBuilder.buildStubTree(LightStubBuilder.java:50) at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:81) at com.intellij.psi.stubs.StubTreeLoaderImpl.readOrBuild(StubTreeLoaderImpl.java:58) at com.intellij.psi.impl.source.PsiFileImpl.getStubTree(PsiFileImpl.java:684) at com.intellij.psi.impl.source.PsiFileImpl.getStub(PsiFileImpl.java:658) at com.intellij.psi.impl.source.PsiJavaFileBaseImpl.getClasses(PsiJavaFileBaseImpl.java:89) at com.intellij.core.CoreJavaDirectoryService.getClasses(CoreJavaDirectoryService.java:59) at com.intellij.psi.impl.PsiElementFinderImpl.getClasses(PsiElementFinderImpl.java:102) at com.intellij.psi.impl.PsiElementFinderImpl.getClasses(PsiElementFinderImpl.java:93) at com.intellij.psi.impl.JavaPsiFacadeImpl.getClasses(JavaPsiFacadeImpl.java:229) at com.intellij.psi.impl.file.PsiPackageImpl.getClasses(PsiPackageImpl.java:154) at com.intellij.psi.impl.file.PsiPackageImpl.b(PsiPackageImpl.java:207) at com.intellij.psi.impl.file.PsiPackageImpl.a(PsiPackageImpl.java:185) at com.intellij.psi.impl.file.PsiPackageImpl.containsClassNamed(PsiPackageImpl.java:222) at com.intellij.psi.impl.JavaPsiFacadeImpl.a(JavaPsiFacadeImpl.java:118) at com.intellij.psi.impl.JavaPsiFacadeImpl.findClass(JavaPsiFacadeImpl.java:89) at org.jetbrains.plugins.groovy.mvc.MvcFramework.hasFrameworkJar(MvcFramework.java:95) at org.jetbrains.plugins.groovy.mvc.MvcProjectWithoutLibraryNotificator.findModuleWithoutLibrary(MvcProjectWithoutLibraryNotificator.java:87) at org.jetbrains.plugins.groovy.mvc.MvcProjectWithoutLibraryNotificator.access$000(MvcProjectWithoutLibraryNotificator.java:39) at org.jetbrains.plugins.groovy.mvc.MvcProjectWithoutLibraryNotificator$1.computeInReadAction(MvcProjectWithoutLibraryNotificator.java:49) at com.intellij.openapi.progress.util.ProgressIndicatorUtils$6$1.run(ProgressIndicatorUtils.java:165) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:908) at com.intellij.openapi.progress.util.ProgressIndicatorUtils$6.run(ProgressIndicatorUtils.java:162) at com.intellij.openapi.progress.impl.ProgressManagerImpl$3.run(ProgressManagerImpl.java:194) at com.intellij.openapi.progress.impl.ProgressManagerImpl.a(ProgressManagerImpl.java:281) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:181) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.a(ProgressIndicatorUtils.java:156) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.access$000(ProgressIndicatorUtils.java:36) at com.intellij.openapi.progress.util.ProgressIndicatorUtils$5$2.run(ProgressIndicatorUtils.java:135) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

at java.lang.Thread.sleep(Native Method) at io.netty.util.ThreadDeathWatcher$Watcher.run(ThreadDeathWatcher.java:137) at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) at java.lang.Thread.run(Thread.java:745)

at java.lang.Thread.sleep(Native Method) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1339) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1332) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1332) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.a(ActionManagerImpl.java:1332) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.preloadActionGroup(ActionManagerImpl.java:1311) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.c(ActionManagerImpl.java:1299) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl.access$200(ActionManagerImpl.java:75) at com.intellij.openapi.actionSystem.impl.ActionManagerImpl$4.run(ActionManagerImpl.java:1282) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“ApplicationImpl pooled thread 7” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467) at com.intellij.util.indexing.TaskQueue$3.run(TaskQueue.java:122) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“Alarm pool(shared)” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039) at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“ApplicationImpl pooled thread 5” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: WAITING on [email protected] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:502) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1313) at java.awt.EventQueue.invokeAndWait(EventQueue.java:1294) at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1348) at com.intellij.util.ui.UIUtil.invokeAndWaitIfNeeded(UIUtil.java:2131) at com.intellij.openapi.project.DumbServiceImpl.a(DumbServiceImpl.java:395) at com.intellij.openapi.project.DumbServiceImpl.access$900(DumbServiceImpl.java:51) at com.intellij.openapi.project.DumbServiceImpl$7.run(DumbServiceImpl.java:347) at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:621) at com.intellij.openapi.progress.impl.ProgressManagerImpl$3.run(ProgressManagerImpl.java:194) at com.intellij.openapi.progress.impl.ProgressManagerImpl.a(ProgressManagerImpl.java:281) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:233) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:181) at com.intellij.openapi.progress.impl.ProgressManagerImpl$9.run(ProgressManagerImpl.java:530) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“TimerQueue” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.DelayQueue.take(DelayQueue.java:223) at javax.swing.TimerQueue.run(TimerQueue.java:171) at java.lang.Thread.run(Thread.java:745)

“Animations” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“ApplicationImpl pooled thread 4” prio=0 tid=0x0 nid=0x0 blocked java.lang.Thread.State: BLOCKED on [email protected] owned by “AWT-EventQueue-0 14.0.5#IU-139.1803.20, eap:false” Id=21 at com.intellij.ide.startup.impl.StartupManagerImpl.runWhenProjectIsInitialized(StartupManagerImpl.java) at org.jetbrains.idea.svn.SvnVcs.activate(SvnVcs.java:380) at com.intellij.openapi.vcs.StartedActivated$3.run(StartedActivated.java:53) at com.intellij.openapi.vcs.StartedActivated.callImpl(StartedActivated.java:99) at com.intellij.openapi.vcs.StartedActivated.doActivate(StartedActivated.java:112) at com.intellij.openapi.vcs.impl.projectlevelman.NewMappings$MyVcsActivator.activate(NewMappings.java:519) at com.intellij.openapi.vcs.impl.projectlevelman.NewMappings.a(NewMappings.java:175) at com.intellij.openapi.vcs.impl.projectlevelman.NewMappings.activateActiveVcses(NewMappings.java:126) at com.intellij.openapi.vcs.impl.projectlevelman.NewMappings$2.run(NewMappings.java:95) at com.intellij.openapi.vcs.impl.VcsInitialization.execute(VcsInitialization.java:87) at com.intellij.openapi.vcs.impl.VcsInitialization$1$1.run(VcsInitialization.java:52) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

at java.lang.Thread.sleep(Native Method) at com.intellij.util.TimeoutUtil.sleep(TimeoutUtil.java:58) at com.intellij.openapi.vfs.impl.local.LocalFileSystemImpl$StoreRefreshStatusThread.run(LocalFileSystemImpl.java:355)

at java.lang.Thread.sleep(Native Method) at com.intellij.util.TimeoutUtil.sleep(TimeoutUtil.java:58) at com.intellij.util.io.BaseDataReader.doRun(BaseDataReader.java:105) at com.intellij.util.io.BaseDataReader$1.run(BaseDataReader.java:46) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

at java.lang.Thread.sleep(Native Method) at com.intellij.util.TimeoutUtil.sleep(TimeoutUtil.java:58) at com.intellij.util.io.BaseDataReader.doRun(BaseDataReader.java:105) at com.intellij.util.io.BaseDataReader$1.run(BaseDataReader.java:46) at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:406) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at org.jetbrains.ide.PooledThreadExecutor$1$1.run(PooledThreadExecutor.java:56)

“Flushing thread” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“ZipFileCache Dispose” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“Periodic tasks thread” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

“ZipFileCache Dispose” prio=0 tid=0x0 nid=0x0 waiting on condition java.lang.Thread.State: TIMED_WAITING on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionOb[email protected] at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093) at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809) at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

Newsletter

Join them now to gain exclusive access to the latest news in the Java world, as well as insights about Android, Scala, Groovy and other related technologies.

Email address:

Recent Jobs

No job listings found.

Join Us

With 1,240,600 monthly unique visitors and over 500 authors we are placed among the top Java related sites around. Constantly being on the lookout for partners; we encourage you to join us. So If you have a blog with unique and interesting content then you should check out our JCG partners program. You can also be a guest writer for Java Code Geeks and hone your writing skills!

Disclaimer

All trademarks and registered trademarks appearing on Java Code Geeks are the property of their respective owners. Java is a trademark or registered trademark of Oracle Corporation in the United States and other countries. Examples Java Code Geeks is not connected to Oracle Corporation and is not sponsored by Oracle Corporation.