EM4J is a monitoring and balloon solution for Java. It contains the following components:

  • A JVMTI balloon agent which integrates the JVM with VMware vSphere® resource management capabilities
  • A lightweight guest agent which collects JVM usage data in JSON format to publish to the vCenter EM4J monitoring console
  • A plug-in to vCenter to display and interpret the data collected from the guest agent


  • Displays a list of all Java processes running in a VM within vCenter
  • For each Java process, presents configuration options and real-time stats
  • For each Java process, displays current memory footprint and usage
  • For all Java processes, displays cumulative categories of memory usage and guest paging over time to assist in right-sizing of VMs running Java
  • Displays best practice and configuration advice for the VM running Java
  • Displays best practice and configuration advice for each Java process
  • vCenter alerts and warnings for actual or potential detected performance problems, such as VM too small or excessive guest paging


  • Allows either more Java workloads to run in the same host memory or greater headroom with larger JVM heaps and VMs in the same host memory
  • JVM balloon agent will inflate a balloon inside the JVM heap if memory pressure exists on the system and if the VM is relatively idle
  • JVM balloon heuristics are tuned for all GC policies and heap configurations in Java 6 and Java 7 to be as transparent to the application as possible
  • JVM balloon works co-operatively with heap compactions and will contract quickly if the application needs more heap space
  • VMs running traditional ballooning can give and take memory from VMs running Java ballooning
  • Multiple JVM processes can contribute to a single VM balloon target
  • Any performance degradation relative to increased memory pressure is very linear, allowing rapid configuration changes on the fly if required