[kepler-dev] [Bug 5576] memory leak in ptolemy.data.expr.CachedMethod

bugzilla-daemon at ecoinformatics.org bugzilla-daemon at ecoinformatics.org
Fri Jun 15 19:22:58 PDT 2012


http://bugzilla.ecoinformatics.org/show_bug.cgi?id=5576

Christopher Brooks <cxh at eecs.berkeley.edu> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
       Hours Worked|                            |2
         AssignedTo|cxh at eecs.berkeley.edu       |crawl at sdsc.edu

--- Comment #2 from Christopher Brooks <cxh at eecs.berkeley.edu> 2012-06-15 19:22:58 PDT ---
This is possibly fixed in r63763 in the ptII tree.
Basically, I had to add better equals() and hashCode() methods to
FunctionType and FunctionType.FieldTypeTerm.

BTW - getting equals() and hashCode() right is tricky.
I found a good document at
 See http://www.technofundo.com/tech/java/equalhash.html

To test the bug
1) Download the attachment above:
http://bugzilla.ecoinformatics.org/attachment.cgi?id=397

2) Start up Kepler, open the model, run it

3) Start up jvisualvm

4) Connect to the Kepler process, Monitor -> Perform GC, generate a heapdump

5) In the heapdump window, click on classes and then search for Cached

Formerly, there were about 1000 entries, now there are many fewer.

Currently, CachedMethod has two entries for map.  It looks like
they are different because of the number of array elements.

I temporarily added a static dump() method to CachedMethod that merely called
  System.out.println(_cachedMethods)
I then temporarily added code to Manager that called CachedMethod.dump()

The output is below.

{map((function(a0:string) {key = string, value = int}),
     arrayType(string,5))= map((function(a0:string) {key = string, value
=int}),
                               arrayType(string,5)),
 map((function(a0:string) {key = string, value = int}),
     arrayType(string))=  map((function(a0:string) {key = string, value =
int}),
                              arrayType(string)),
string.split(string)=string.split(string),
string.isEmpty()=string.isEmpty(),
string.trim()=string.trim()}

I don't think there is much we can do about this, but I'm open to suggestions.


I think this is ready to be closed, I'm dispatching it back to Daniel for his 
approval.

-- 
Configure bugmail: http://bugzilla.ecoinformatics.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA Contact for the bug.


More information about the Kepler-dev mailing list