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!