Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8260424

Extend JMap to support parallel heap dump

    XMLWordPrintable

    Details

    • Type: CSR
    • Status: Closed
    • Priority: P4
    • Resolution: Withdrawn
    • Fix Version/s: 17
    • Component/s: core-svc
    • Labels:
      None
    • Subcomponent:
    • Compatibility Risk:
      low
    • Compatibility Risk Description:
      Hide
      The change adds new option to jmap -dump.
      The risk is low as follow description:
       - It means using old version of jmap could work normally with JDK that having this change (with parallel option unacceptable by jmap).
       - It also means using new version of jmap -dump without parallel option on old JDK should work normally.
       - It also means using new verion of jmap -dump with parallel option on old JDK should work normally, with parallel option values taking no effect.
      Show
      The change adds new option to jmap -dump. The risk is low as follow description:  - It means using old version of jmap could work normally with JDK that having this change (with parallel option unacceptable by jmap).  - It also means using new version of jmap -dump without parallel option on old JDK should work normally.  - It also means using new verion of jmap -dump with parallel option on old JDK should work normally, with parallel option values taking no effect.

      Description

      Summary

      Add a new sub-command option "parallel" to the existing "dump" jmap command line option, which specifies how many threads to use to generate the heap dump file.

      Problem

      JDK-8239290 and related issues has introduced the parallel heap inspection, using the same mechanism for jmap -dump could help speed up heap dumping.

      Solution

      Add a new sub-command option "parallel" to the existing "dump" jmap command line option, which specifies how many threads to use to generate the heap dump file.

      Specification

      Updated specification.

      Usage:
      jmap -clstats <pid>
          to connect to running process and print class loader statistics
      jmap -finalizerinfo <pid>
          to connect to running process and print information on objects awaiting finalization
      jmap -histo[:[<histo-options>]] <pid>
          to connect to running process and print histogram of java object heap
      jmap -dump:<dump-options> <pid>
          to connect to running process and dump java heap
      jmap -? -h --help
          to print this help message
      
      dump-options:
        live         dump only live objects
        all          dump all objects in the heap (default if one of "live" or "all" is not specified
        format=b     binary format
        file=<file>  dump heap to <file>
        gz=<number>  If specified, the heap dump is written in gzipped format using the given compression level.
                     1 (recommended) is the fastest, 9 the strongest compression.
       + parallel=<number>  Number of parallel threads to use for heap dump:
       +                    0 (the default) means let the VM determine the number of threads to use.
       +                    1 means use one thread (disable parallelism).
       +                    For any other value the VM will try to use the specified number of threads, but might use fewer.
      
      Example: jmap -dump:live,format=b,file=heap.bin,parallel=5 <pid>
      
      histo-options:
        live             count only live objects
        all              count all objects in the heap (default if one of "live" or "all" is not specified)
        file=<file>      dump data to <file>
      -  parallel=<count> generate histogram using this many parallel threads, default 0
      -                     0 use system determined number of threads
      -                     1 use one thread, i.e., disable parallelism
      -                     n use n threads, n must be positive
      + parallel=<number>  Number of parallel threads to use for heap inspection:
      +                     0 (the default) means let the VM determine the number of threads to use.
      +                     1 means use one thread (disable parallelism).
      +                     For any other value the VM will try to use the specified number of threads, but might use fewer.
      
      Example: jmap -histo:live,file=/tmp/histo.data,parallel=5 <pid>

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              lzang Lin Zang
              Reporter:
              lzang Lin Zang
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: