1 Reply Latest reply on Jul 27, 2006 11:38 AM by clebert.suconic

    Sorting a GC operation

    gsporar

      In the online docs. (http://labs.jboss.com/portal/jbossprofiler/doc/webinterface.html#webinterface-runtime) there is a Figure 4.10 that shows the details of a GC. There are three links on each line of the table: Leaks, Creations, and Threads. I have a few questions:

      1. If I click on Leaks I see a subset of the information presented when I click on Creations, is that correct? In other words, the Creations display shows the total number of instances created (by method) and the total number still alive on the heap. The Leaks display just shows the total number (by method) that are still alive on the heap.

      2. The Bytes column just shows the size of the objects, not total retained size, correct? In other words, if I have 10 instances of class A on the heap and each class A is 100 bytes then the Bytes value would be 1000 even if each instance of class A had a live reference to a unique class B instance that is 100000 bytes.

      3. Assuming the answer to #2 is that the retained size is not shown, then are there plans to add more display and sort options? I ask because I don't immediately see how to use this display to track down some types of memory leaks. I can calculate a delta in my head between Quantity and Release Quantity, but it would be nice if there were an additional column for it. More importantly, though, the objects on the heap taking up the most space are not always the real source of a memory leak problem - a slow leak over time of small objects can cause just as much trouble. But those slow leaks take longer to eat up enough heap space to cause an OutOfMemoryError, so it would be nice to be able to sort by the delta between Quantity and Release Quantity (so that I don't have to run the application until the error occurs). Is there any further documentation that provides a tutorial showing how best to use this display?

      Thanks,
      Gregg

        • 1. Re: Sorting a GC operation
          clebert.suconic

           

          "gsporar" wrote:
          1. If I click on Leaks I see a subset of the information presented when I click on Creations, is that correct? In other words, the Creations display shows the total number of instances created (by method) and the total number still alive on the heap. The Leaks display just shows the total number (by method) that are still alive on the heap.


          It shows objects created during the capture, associated with the method. You could click either Instances Created or Instances Created + subMethods.
          The release is associated with GC operations that happened during capturing. You can also disable release calculation deselecting "Calculate releases on GC operations" during the PID selection.

          "gsporar" wrote:

          2. The Bytes column just shows the size of the objects, not total retained size, correct? In other words, if I have 10 instances of class A on the heap and each class A is 100 bytes then the Bytes value would be 1000 even if each instance of class A had a live reference to a unique class B instance that is 100000 bytes.


          Yes... that is correct.

          Also.. .this is capturing ObjectAlloc and ObjectRelease events from JVMPI. This is showing only what was allocated during data capturing, and associating these allocs withs methods what happened during event MethodEnter and MethodExit.

          For finding memory-leaks is better to use JVMTI/MemoryProfiler.

          "gsporar" wrote:

          3. Assuming the answer to #2 is that the retained size is not shown, then are there plans to add more display and sort options? I ask because I don't immediately see how to use this display to track down some types of memory leaks. I can calculate a delta in my head between Quantity and Release Quantity, but it would be nice if there were an additional column for it. More importantly, though, the objects on the heap taking up the most space are not always the real source of a memory leak problem - a slow leak over time of small objects can cause just as much trouble. But those slow leaks take longer to eat up enough heap space to cause an OutOfMemoryError, so it would be nice to be able to sort by the delta between Quantity and Release Quantity (so that I don't have to run the application until the error occurs). Is there any further documentation that provides a tutorial showing how best to use this display?


          I guess for memory leaks is better to use the JVMTI module. This is used exclusevely to track down what's happening inside a method. Like... to verify if a method is creating an object and releasing it properly. This is more useful for things like message objects.


          Also, please... as you're reading the documentation, if you find any lack of information, please let me know how can I improove it.

          thanks a lot,


          Clebert Suconic