JDK-5109602 : RedefineClasses leaks memory by holding all possible obsolete jmethodIDs
  • Type: Bug
  • Component: hotspot
  • Sub-Component: jvmti
  • Affected Version: 1.4.2,5.0
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic,windows_2000
  • CPU: generic,x86
  • Submitted: 2004-09-30
  • Updated: 2005-04-19
  • Resolved: 2005-03-02
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other JDK 6
5.0u4Fixed 6 b26Fixed
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
A linked list of previous versions of the class is kept to hold obsolete
jmethodIDs.  This leaks memory which matters on massive redefines used by
profiling tools.

###@###.### 2004-09-30

The linked list of previous versions of the class is also used to find
and update the method references that are stored in the constant pool
cache. This update is necessary so that redefined methods that make new
calls to other redefined methods get the current version.

###@###.### 2004-11-12 18:19:20 GMT

Looks like the old class' itable and vtable are also updated.

###@###.### 2004-11-12 18:29:15 GMT

Comments
SUGGESTED FIX Remove linked list of previous versions. Hold obsolete jmethodIDs only lazily. ###@###.### The fix for this bug is part of a batch of JFluid/RedefineClasses fixes targeted for a Tiger-Update release. See jfluid-merge-update4-full-webrev.tar.Z attachment in 5088035 for the complete set of changes. ###@###.### 2005-2-25 22:17:36 GMT The JNI ID rewrite part of this bug fix has broken AsyncGetCallTrace. See 6250286 for details. ###@###.### 2005-04-19 17:51:07 GMT
25-02-2005

EVALUATION Required.
01-10-2004