Re: Critical memory leak with J/Link
- To: mathgroup at smc.vnet.net
- Subject: [mg47558] Re: [mg47530] Critical memory leak with J/Link
- From: "Werner Schuster" <werner.schuster at netway.at>
- Date: Fri, 16 Apr 2004 05:20:23 -0400 (EDT)
- References: <200404150739.DAA11638@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
> Memory is not freed with calls to JavaGC[]. It is only freed with > QuitJava[] or quitting the kernel. You might want to refer to the "Reference Counts and Memory Management" section of the J/Link Userguide; JavaGC[] won't be of much help, if there is still a valid reference to the Object; in your case, the "g" expression still points to the MemoryHolder, which in turn still references the large Graph Expression that you passed in. This is, as far as I see it, correct behaviour (Mathematica or J/Link doesn't know that you don't intend to use the "g" expression/reference anymore, so it keeps it). You can use either JavaBlock[] (wrap your code inside it) or one of the Release* Expressions (ReleaseObject[],...) to get rid of the reference (possibly followed by a JavaGC[] to make sure the GC frees the memory). I suppose that should solve your problem (unless I'm missing something else). murphee -- Werner Schuster (murphee) Student of SoftwareEngineering and KnowledgeManagement Maintainer of the OGO-JOGI Project @ http://ogo-jogi.sourceforge.net/ Blog @ http://jroller.com/page/murphee
- References:
- Critical memory leak with J/Link
- From: "J. McKenzie Alexander" <jalex@lse.ac.uk>
- Critical memory leak with J/Link