JXRay 2.9 released

In this version: Heap dump analysis now takes into account JVM flags of the analyzed Java process, such as GC type, maximum heap size etc. The flags can be supplied by the user through a text file, or saved in the dump itself. The above feature allows JXRay to identify common mistakes with JVM flags and heap configuration It also allows for an accurate estimate of the G1 heap region size, which in turn helps …

Continue Reading

A heap dump from OutOfMemoryError contains lots of garbage: how can it happen?

Native code (typically C/C++) invoked from Java code may need to access contents of Java objects. For example, compression code (zip library) and I/O code operates on byte[] arrays that are created by the Java code. When native code goes through the contents of a Java array, it is highly desirable from the performance standpoint that this code reads/writes bytes directly from the heap, using raw machine addresses. However, that would break the fundamental GC …

Continue Reading

How to save 24G of memory per application instance

Apache Pinot is a column-oritented distributed data store written in Java. It is open-source code used in applications where fast analytics is needed on immutable data. For example, at LinkedIn it was initially used to power the feature that allows members to see who has viewed their profile in real-time. Thanks to JXRay analysis, it has been recently discovered that in some installations, Pinot instances running with big (over 60G) heaps wasted a huge amount …

Continue Reading