Thread Dump Analysis
Upcoming SlideShare
Loading in...5

Thread Dump Analysis






Total Views
Views on SlideShare
Embed Views



1 Embed 89 89



Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

Thread Dump Analysis Thread Dump Analysis Presentation Transcript

  • OverviewReal life situationsThread dump formatTaking thread dumpsTDA toolsReading materialQuestions
  • Real life situations
  • Problems with I/OThreads maybe blocked or perform slowly during access to I/O resources: File system Network DatabaseSingle or multiple thread dumps may help understading the problem
  • Problems with algorithmsAlgorithm complexity is not suited well for the data set sizeAlgorithm is overusing expensive resources or memoryAlgorithm is overusing locks, while it can be implemented in a lock-free mannerSingle or multiple thread dumps may help noticing the problem
  • Problems with locks and syncronizationNo locking (not thread-safe implementations)Deadlocks (overly syncronised)Lock contention (overly syncronised)Lock overhead (too many locks)Single or multiple thread dumps may explain the situation
  • Example: HashMap gives 100% CPU loadUsage of not syncronised HashMap in a multi-threaded applicationIn certain situations it goes into infinite loopThis causes 100% CPU loadThe probabilty of entering infinite loop depends on the size of the HashMapSingle thread dump reveals the problem
  • From Wikipedia: Deadlocks “A deadlock is a situation in which two or more competing actions are each waiting for the other to finish, and thus neither ever does.
  • DeadlocksIn real life, deadlocks are pretty rareCPU usage is usally close to 0Single thread dump can reveal a deadlock situation
  • Lock contentionFrom Wikipedia: “This occurs whenever one process or thread attempts to acquire a lock held by another process or thread. The more granular the available locks, the less likely one process/thread will request a lock held by the other. (For example, locking a row rather than the entire table, or locking a cell rather than the entire row.)
  • Lock contentionThe most common problem with multi-threaded applications related to lockhandlingSometimes easy, sometimes very hard to detectYou can only see one layer at a timeMultiple thread dumps may help to detect lock contention situations
  • Sporadic application behaviourMay be related to not thread safe codeMay be related to load patternsMay be related to specific dataThreads dumps may or may not help
  • Thread dump format
  • FormatsFormats differ for various JVM and application server implementationsThere is no tool that supports them allThough format is usually very readble and follows same principles
  • HotSpot format
  • Thread states I “A thread can be in one of the following states: NEW - A thread that has not yet started is in this state. RUNNABLE - A thread executing in the Java virtual machine is in this state. BLOCKED - A thread that is blocked waiting for a monitor lock is in this state.
  • Thread states II“WAITING - A thread that is waiting indefinitely for another thread to perform aparticular action is in this state.TIMED_WAITING - A thread that is waiting for another thread to perform anaction for up to a specified waiting time is in this state.TERMINATED - A thread that has exited is in this state.
  • Taking thread dumps
  • How?jstackjconsolejvisualvmwrite your own JMX clientuse your favorite profiler
  • Demo
  • Thread dumpanalysis tools
  • TDA toolsIBM Thread and Monitor Dump analysisJava Thread Dump AnalyzerSamuraiThread Dump AnalyzerThread Dump Viewer
  • Demo
  • Book
  • Questions?
  • JVM Internals TrainingAestas/IT organizes "JVM Internals" training on March 25/26, 2013.This 2–day course takes the developer on an in-depth tour of the Java Virtual Machine.Intended for experienced JVM-based programmers, who want to get deeper with theplatform, this course will introduce the major subsystems of the JVM and practical waysto apply this knowledge in real applications.
  • Topics IHistory of Java and JVMSpecificationsBytecodeBase componentsDetailed architectureJIT compilationGarbage collectionThreadsLocksClassloading
  • Topics IISecurityMonitoring toolsJava agentsDebuggingMemory analysisTuning principlesGC tuningResponsiveness and throughputTuning Options
  • RegistrationTraining registration at: by sending e-mail
  • Thanks!