|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
java.lang.instrument.Instrumentation.redefineClasses() leaks
class bytes for the redefined class or classes.
As part of the work on this bug, the following SDK/JDK test
will be added:
java/lang/instrument/RedefineBigClass.sh
The attached RedefineBigClass.server.jtr.00 tells the tale
for the Server VM on Solaris X86. Version info is:
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Server VM (build 20.4-b02, mixed mode)
Here is trace info for the first RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=323700K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=321536K)
RedefineClasses-0x1: redefined name=BigClass, count=1 (avail_mem=321504K)
Here is trace info for the last RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=106516K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=106456K)
RedefineClasses-0x1: redefined name=BigClass, count=1000 (avail_mem=106456K)
Here's the math for leak:
321504 - 106456
215048
. / 1024
210.0078
. / 1024
.2050
Don't know why but the Server VM leaked way less than the Client VM
in this run.
The attached RedefineBigClass.client.jtr.00 tells the tale
for the Client VM on Solaris X86. Version info is:
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
Java HotSpot(TM) Client VM (build 20.4-b02, mixed mode)
Here is trace info for the first RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=1185256K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=1184172K)
RedefineClasses-0x1: redefined name=BigClass, count=1 (avail_mem=1184140K)
Here is trace info for the last RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=138252K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=138252K)
RedefineClasses-0x1: redefined name=BigClass, count=1000 (avail_mem=138252K)
Here's the math for leak:
1184140 - 138252
1045888
. / 1024
1021.3750
. / 1024
.9974
So we leaked almost 1GB in 1000 RedefineClasses() calls.
I did another Server VM run:
Here is trace info for the first RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=1767152K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=1764988K)
RedefineClasses-0x1: redefined name=BigClass, count=1 (avail_mem=1764956K)
Here is trace info for the last RedefineClasses() call:
RedefineClasses-0x1: loading name=BigClass (avail_mem=640444K)
RedefineClasses-0x1: loaded name=BigClass (avail_mem=640388K)
RedefineClasses-0x1: redefined name=BigClass, count=1000 (avail_mem=640388K)
Here's the math:
1764956 - 640388
1124568
. / 1024
1098.2109
. / 1024
1.0724
So we leaked more than 1GB in 1000 RedefineClasses() calls.
Not sure at all what happened in the other Server run.
|