Mchr3k - InMemProfiler

Profiler Arguments

This page gives a complete description of the options which can be used with InMemProfiler.

  • #bucket-5,10,15 - Set the instance lifetime bucket intervals. The numbers are in seconds and the list must be in ascending order. This example would result in 4 buckets:
    • 0 - 5: Instances which lived less than 5 seconds
    • 5 - 10: Instances which lived between 5 and 10 seconds
    • 10 - 15: Instances which lived between 10 and 15 seconds
    • 15 - inf: Instances which lived longer than 15 seconds
  • #include-other,java.util.ArrayList - Comma separated list of allowed class name prefixes. These allows the instrumentation to be restricted to instances of a particular class or classes in a package.
  • #exclude-java.util.HashMap - Comma separated list of excludes class name prefixes. These allows the instrumentation to ignore instances of a particular class or classes in a package.
  • #exactmatch - This argument changes the behaviour of #include and #exclude to only allow classes which exactly match the provided names.
  • #gc-1 - The reported lifetime depends on the time at which the instances are collected rather than the time that they became garbage. This means the reported lifetime is always an overestimate. Using this argument enables a thread which calls System.gc() regularly. In this example System.gc() will be called every second.
  • #periodic-5,1 - The frequency at which a summary should be output. A summary is always output at JVM shutdown but this will not work if the JVM process is forced to terminate. The second number is optional and if present, determines a number of times that the collected data will be reset after output. A negative number will cause the results to be reset every time. Examples:
    • #periodic-5 - Output every 5 seconds
    • #periodic-5,-1 - Output every 5 seconds and reset the collected data every time
    • #periodic-5,3 - Output every 5 seconds and reset the collected data the first 3 times
  • #output-/tmp/ - The location in which the inmemprofiler.log file should be written. This defaults to the current working directory.
  • #trackcollection - Enables the tracking of when objects are collected.
  • #trace - Enables the tracking of allocation sites. Enabling this option at the same time as #trackcollection will result in a very high per object memory overhead. See #every below for a way to alleviate this.
  • #tracedetail - Include line numbers in trace.
  • #every-10 - This option allows InMemProfiler to only examine every n'th object.
  • #largerthan-100 - This option allows InMemProfiler to only examine objects which are strictly larger than 100 bytes in size.
  • #outputlimit-5 - This limits the number of "Allocation Sites" and "Allocations Classes" output to 5.
  • #delayprofiling v This disables InMemProfiler profiling until ProfilerAPI beginPausedProfiling() is called. This can be done using one of the JSP Control Pages
  • #noblame - Skip the output the traceignore/tracetarget analysis.
  • #traceignore-org.apache.tomcat,org.apache.axis2 - This allows you to specify class prefixes/packages which should be ignored when constructing the "Allocation Classes summary". This is useful for ignoring common library classes found at the bottom of several stack traces and common runner classes (e.g. java.lang.Thread) which are commonly found at the top of stack traces.
  • #tracetarget-com.yourorg.package - This specifies the components which you are most interested in fingering as the source of memory allocations. When InMemProfiler is looking through a stacktrace to construct the "Allocation Classes summary" it will stop as soon as it finds a frame with a classname starting with one of the entries in #allocatingclasstargets. For more information about why this is useful refer to the article Identifying Memory Allocators.