Java is one of the most popular technologies used for application development. Tens of thousands of web and mobile applications are built on Java around the world. Some highlights of Java’s advantages include its security, scalability, portability and compatibility – among the most sought characteristics for building highly demanding and performance-sensitive applications, as seen in banking, trading, and other financial corporations. Speed is absolutely critical for these low-latency applications. If a Java-based trading application is not able to manage handling large in-memory data sets in real time, business-critical transactions will stall. Just a few milliseconds of delay can be disastrous and result in heavy financial losses.
The role of the Java Virtual Machine (JVM) in Java’s server-side architecture plays a major role in memory management for these high-frequency applications. Using a process known as garbage collection, the JVM automatically frees up heap memory used by objects that are no longer referenced in the Java code. Automating this process makes the life of a developer easier, as he/she is relieved from keeping track of free allocated memory, a time-consuming task. However, garbage collection does itself take time to execute. The more frequently it happens, the more pauses will occur in processing data. So, with too much garbage collection the transaction will likely suffer from slow performance.
Conventional JVM manufacturers are working towards reducing garbage collection pauses and ensuring that memory management is more seamless, using techniques such as concurrent, parallel and compacting garbage collection. Further, some modern JVM vendors, such as Azul, are adopting a radically new pauseless approach to garbage collection that delivers faster processing for low-latency and memory-intensive applications.
Achieving optimum JVM performance is key to ensuring proper memory management and fast application processing. According to a Cornell University study, a 1-millisecond improvement in the performance of a trading application can be worth $100 million a year to a major brokerage firm. Because of this potential for loss, IT teams owning banking, financial, trading and other Java-based applications place a high value on having a proper JVM monitoring strategy in place. A comprehensive Java performance monitoring solution will help track critical JVM metrics and alert the team to issues with garbage collection, out-of-memory errors, high CPU threads, and more.
Top JVM Performance Metrics to Monitor
JVM Memory Management
- Know if the heap memory has exceeded the reserved memory for the JVM
- Monitor heap and non-heap memory and know whether the JVM is sized correctly
- Identify specific JVM processes that are consuming high memory and/or CPU
JVM Garbage Collection
- Number of times garbage collection happens (frequency)
- Time taken for garbage collection
- Memory metrics before and after garbage collection
- Track down blocked, waiting, deadlocked and high CPU threads
- Measure wait time for each thread
- Have access to quickly look up the stack trace and locate specific method calls that are having any exceptions
Other JVM-level Metrics
- Monitor the number of loaded and unloaded classes
- Continuously check JMX connectivity to the JVM
- Keep tabs on JVM uptime and availability stats
JVM Server-level Metrics
- For a pauseless JVM like Azul Zing, the overall reservable, contingency and pause prevention pool memory metrics are available at the operating system layer since these are shareable across multiple JVMs running on the same server. You need the ability to measure these memory metrics from the operating system.
- Additionally, administrators need the ability to monitor the overall available memory at the server level, as well as that which is being allocated to the OS.
- Track the health status of the JVM server and the server hardware
eG Enterprise is an end-to-end application performance monitoring solution that provides deep visibility into all Java performance metrics from the JVM and application container, all the way across business transactions and end-user experience. It gives you instant visibility into erroneous application code and errant SQL queries to facilitate code optimization. Monitor all aspects of JVM performance to ensure that the JVM works optimally and delivers fast and jitter-less application performance.
eG Enterprise supports monitoring several popular JVMs including Oracle HotSpot, JRockit, OpenJDK, IBM J9, SAP JVM, and Azul Zing.