Wilson Mar bio photo

Wilson Mar


Email me Calendar Skype call

LinkedIn Twitter Gitter Instagram Youtube

Github Stackoverflow Pinterest

How to find and fix JVM reliability running Java

US (English)   Español (Spanish)   Français (French)   Deutsch (German)   Italiano   Português   Estonian   اَلْعَرَبِيَّةُ (Egypt Arabic)   中文 (简体) Chinese (Simplified)   日本語 Japanese   한국어 Korean


This tutorial explains the tools and techniques for finding faults in applications that make use of the Java Virual Machine (JVM).

Languages that use the JVM include

  • Java
  • Scala
  • JPython
  • RubyPython
  • etc.

Potential root causes

  • Configuration settings inappropriate (defaults)
  • Network equipment failure
  • Network delays
  • Server hardware (memory, inappropriate cache size)
  • Inadequate free disk space
  • Code causing memory leaks
  • Inefficient coding techniques


  • Delays in response time (due to garbage collection, slow database access, etc.)
  • Memory leaks
  • CPU spikes
  • Heavy disk usage (thrashing, swapping)
  • etc.

The tools

  1. Operating System level metrics (collected by Microsoft Windows Perfmon, etc.)
  2. Operating System log storage and analysis

  3. Application logs storage and analysis
  4. Application log readers

  5. JMX to collect from JVM Garbage Collection
  6. JVM Garbage Collection log readers

  7. Operating System thread dump readers

  8. Java Code Profilers to identify resources consumed by specific objects

  9. Debuggers (run one line at a time)

  10. Static code analyzers (such as SonarQube)
  11. Code linters

Our services

  • Interview to collect relevant facts and perspectives
  • Advise on courses of action
  • Design architecture and project plans
  • Assist with implementation
  • Verify
  • Educate

Call me