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

Instrumentation.retransformClasses() leaks class bytes

XMLWordPrintable

    • b40
    • 6
    • b10
    • generic
    • generic
    • Verified

        java.lang.instrument.Instrumentation.retransoformClasses() leaks
        memory for the retransformed class or classes.

        As part of the work on this bug, the following SDK/JDK test
        will be added:

            java/lang/instrument/RetransformBigClass.sh
        The attached output.6u29_server_base.with_transformer.log tells
        the tale for the Server VM on Solaris X86. Version info is:

        java version "1.6.0-201112142258.dcubed.exp_bofa_leak"
        Java(TM) SE Runtime Environment (build 1.6.0-201112142258.dcubed.exp_bofa_leak-jprtadm_14_Dec_2011_15_17-b00)
        Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)

        The above bits are with the fix for 7121600 in place.


        Here is trace info for the first RedefineClasses() call:

        RedefineClasses-0x1: loading name=BigClass (avail_mem=1183084K)
        RedefineClasses-0x1: loaded name=BigClass (avail_mem=1178924K)
        RedefineClasses-0x1: redefined name=BigClass, count=1 (avail_mem=1178884K)


        Here is trace info for the last RedefineClasses() call:

        RedefineClasses-0x1: loading name=BigClass (avail_mem=134072K)
        RedefineClasses-0x1: loaded name=BigClass (avail_mem=133040K)
        RedefineClasses-0x1: redefined name=BigClass, count=1000 (avail_mem=133040K)


        Here's the math for leak:

        1178884 - 133040
        1045844
        . / 1024
        1021.3320

        So we leaked just over 1GB in 1000 RedefineRetransform() calls.
        The attached output.6u29_client_base.with_transformer.log tells
        the tale for the Client VM on Solaris X86. Version info is:

        java version "1.6.0-201112142258.dcubed.exp_bofa_leak"
        Java(TM) SE Runtime Environment (build 1.6.0-201112142258.dcubed.exp_bofa_leak-jprtadm_14_Dec_2011_15_17-b00)
        Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode)

        The above bits are with the fix for 7121600 in place.


        Here is trace info for the first RedefineClasses() call:

        RedefineClasses-0x1: loading name=BigClass (avail_mem=1112544K)
        RedefineClasses-0x1: loaded name=BigClass (avail_mem=1108400K)
        RedefineClasses-0x1: redefined name=BigClass, count=1 (avail_mem=1108352K)


        Here is trace info for the last RedefineClasses() call:

        RedefineClasses-0x1: loading name=BigClass (avail_mem=151196K)
        RedefineClasses-0x1: loaded name=BigClass (avail_mem=150160K)
        RedefineClasses-0x1: redefined name=BigClass, count=1000 (avail_mem=150160K)


        Here's the math for leak:

        1108352 - 150160
        958192
        . / 1024
        935.7343

        So we leaked almost 1GB in 1000 RedefineRetransform() calls.

              dcubed Daniel Daugherty
              dcubed Daniel Daugherty
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: