I am not. Thanks for pointing it out, this is the likely cause of my problems. I dump out many XMLElement objects to strings but probably there are xdoc objects created that needs to be freed. Will fix.
Also submitted issue to LightXML.jl on github: https://github.com/JuliaLang/LightXML.jl/issues/16 Thanks, Robert Den torsdag 22 januari 2015 kl. 01:50:34 UTC+1 skrev Tony Kelman: > > Are you explicitly calling free(xdoc) > https://github.com/JuliaLang/LightXML.jl/blob/d6584b80d52e8e16f18dac45bdf326edf0eb6534/src/document.jl#L70 > anywhere? > I don't think LightXML is setting any finalizers currently. > > On Wednesday, January 21, 2015 at 3:43:57 PM UTC-8, Robert Feldt wrote: >> >> No, I'm pretty sure it doesn't: >> >> https://github.com/JuliaOpt/NLopt.jl/blob/master/REQUIRE >> >> I just realized one of the opt runs is actually calling out to the >> LightXML package. I think it is likely the mem leak is in there. We create >> a very large number of XML objects, dump them to strings and then don't >> hold on to them from the Julia side. I guess it might not be releasing them >> on the C side of LightXML or in the julia binding. Just a guess though. >> >> Cheers, >> >> Robert >> >> On Thu, Jan 22, 2015 at 12:08 AM, Jameson Nash <vtj...@gmail.com> wrote: >> >>> Does NLopt use the FastAnonymous package to create function closures? >>> >>> On Wed, Jan 21, 2015 at 4:58 PM Robert Feldt <robert...@gmail.com> >>> wrote: >>> >>>> I am running optimizations using different algorithms within the >>>> NLopt.jl package. Memory slowly builds until the julia process is killed. >>>> I >>>> thought the problem might be that the NLopt opt objects leaks some memory >>>> so I tried the following code after each optimization run (there is a big >>>> loop running multiple optimization runs after each other) to release the >>>> NLopt::Opt object saved in my nlopt in "slot" named "opt" object: >>>> >>>> # Overwrite the opt object to try to give back its memory. There >>>> seems to be mem leaks >>>> # when we have long-running opt runs: >>>> NLopt.destroy(nlopt.opt) # Not sure what is the effect of this but we >>>> try... >>>> nlopt.opt = nothing >>>> gc() >>>> >>>> but memory keeps building. I guess it could be in my (large and very >>>> complex and thus hard to distill down to an example) code used in the >>>> fitness function that NLopt calls out to but this is normal Julia code and >>>> should be garbage collected. I realize it is hard to debug without more >>>> concrete code but if anyone has ideas on why the Julia process might >>>> slowly >>>> but continuously be increasing its mem use (I'm running on a MacBoock Pro >>>> with Yosemite) I'd appreciate any tips/pointers or how to debug further. >>>> >>>> Each NLopt run is on the order of 15 minutes with around 2000 function >>>> evaluations. >>>> >>>> Regards, >>>> >>>> Robert Feldt >>>> >>>> >> >> >> -- >> Best regards, >> >> /Robert Feldt >> -- >> Tech. Dr. (PhD), Professor of Software Engineering >> Blekinge Institute of Technology, Software Engineering Research Lab, and >> Chalmers, Software Engineering Dept >> Explanea.com - Igniting your Software innovation >> robert.feldt (a) bth.se or robert.feldt (a) chalmers.se or >> robert.feldt (a) gmail.com >> Mobile phone: +46 (0) 733 580 580 >> http://www.robertfeldt.net <http://www.cse.chalmers.se/~feldt> >> >