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.
|