RE: JESS: [EXTERNAL] Question on QueryResult close() function

2013-06-28 Thread Friedman-Hill, Ernest
Hi Daniel,

Closing a QueryResult doesn't really do anything important; normal garbage 
collection will free all of its resources.

I used Google to see if there was a standard Jess/Matlab integration that I 
didn't know about, but I didn't find one; I'm afraid I don't know anything 
about how Jess and Matlab are typically used together. Jess does warm up for 
a few iterations if run repeatedly with the same rules - i.e., (reset) won't 
necessarily get you back to the same memory usage as before the first run - but 
this levels off quickly. It would be a good idea to run a heap analyzer tool to 
see what kind of objects are being leaked; that might give us a clue as to 
what's happening.

From: owner-jess-us...@sandia.gov [mailto:owner-jess-us...@sandia.gov] On 
Behalf Of Daniel Selva
Sent: Thursday, June 27, 2013 12:53 PM
To: jess-users
Subject: JESS: [EXTERNAL] Question on QueryResult close() function

Hi,

I am experiencing a memory leak problem in a Matlab-Jess application and I am 
trying to locate the leak. I came across the definition of the close() method 
of the QueryResult class. I have never called this method after using queries.

1) Should I call close() after using a query?
2) Could not calling close() be the cause of the leak?

If not, I would appreciate any tips on typical causes of leaks in Matlab-Jess 
applications.

Thanks in advance,

Daniel


Re: JESS: [EXTERNAL] Question on QueryResult close() function

2013-06-28 Thread Peter Lin
Hi Daniel,

How are you measuring the leak?

It is important to look at the heap used and not the total heap allocated
to the JVM process. What I've done in the past with JESS is write a
function that uses java's runtime class to get actual memory used stats.

Runtime rt = Runtime.getRuntime();
long free = rt.freeMemory();
long total = rt.totalMemory();

If you have concerns about JVM heap getting to big, then set -Xmx to the
value you desire. If runtime stats don't help, your only viable option is
to use a profiling tool like YourKit, JProbe or some other profiler to
track down the leak.

peter


On Fri, Jun 28, 2013 at 9:21 AM, Friedman-Hill, Ernest
ejfr...@sandia.govwrote:

  Hi Daniel,

 ** **

 Closing a QueryResult doesn’t really do anything important; normal garbage
 collection will free all of its resources.

 ** **

 I used Google to see if there was a standard Jess/Matlab integration that
 I didn’t know about, but I didn’t find one; I’m afraid I don’t know
 anything about how Jess and Matlab are typically used together. Jess does
 “warm up” for a few iterations if run repeatedly with the same rules –
 i.e., “(reset)” won’t necessarily get you back to the same memory usage as
 before the first run – but this levels off quickly. It would be a good idea
 to run a heap analyzer tool to see what kind of objects are being leaked;
 that might give us a clue as to what’s happening.

 ** **

 *From:* owner-jess-us...@sandia.gov [mailto:owner-jess-us...@sandia.gov] *On
 Behalf Of *Daniel Selva
 *Sent:* Thursday, June 27, 2013 12:53 PM
 *To:* jess-users
 *Subject:* JESS: [EXTERNAL] Question on QueryResult close() function

 ** **

 Hi,

 ** **

 I am experiencing a memory leak problem in a Matlab-Jess application and I
 am trying to locate the leak. I came across the definition of the close()
 method of the QueryResult class. I have never called this method after
 using queries. 

 ** **

 1) Should I call close() after using a query?

 2) Could not calling close() be the cause of the leak? 

 ** **

 If not, I would appreciate any tips on typical causes of leaks in
 Matlab-Jess applications. 

 ** **

 Thanks in advance,


 Daniel