MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Controlling Memory Usage from JLink

  • To: mathgroup at
  • Subject: [mg107798] Re: Controlling Memory Usage from JLink
  • From: "Alexey Popkov" <lehin.p at>
  • Date: Fri, 26 Feb 2010 04:07:19 -0500 (EST)
  • References: <hm5751$kh4$> <hm6u03$gij$>

news:hm6u03$gij$1 at
> My guess here is that you are doing something that needs a lot of
> memory, but not _in the Kernel_, and MemoryContrained only controls the
> memory usage of the mathematica kernel. You should note that the
> Mathematica FrontEnd (the gui you see), many of the import/export
> functionalities and some other functionalities are running in separated
> processes which use their own share of memory, which can not be
> controlled with MemoryConstrained. So could you give an example where
> MemoryContrained does (sometimes) fail?

My calculation involves solving a system of differential equations by 
NDSolve in different domains and sometimes (I can not predict) such solution 
(probably a set of InterpolatingFunctions) takes hudge volume of memory. In 
such cases I must kill the MathKernel because the computation will go 
infinite time. I have found a workaround (not ideal): one MathKernel (which 
may be called "master MathKernel")  comands the second MathKernel (which may 
be called "working MathKernel") to compute the solution for particular set 
of parameters of the system of differential equations. I do this by a 
command like

LinkWrite[link, Unevaluated[EvaluatePacket[
MemoryConstrained[f[x, y], TOTALMEMORYCONSTRAIN - MemoryInUse[], $Failed]

In many cases this works well. But sometimes it looks like that 
"MemoryConstrained" is just ignored: MathKernel takes a hudge volume of 
memory and freezes because of swapping. I do not understand why it happens. 
But I have found some (not elegant) workaround: I use TimeConstrained[] in 
the "master MathKernel". It is not very good and obviously proves that 
MemoryConstrained[] fails (I am setting the parameter TOTALMEMORYCONSTRAIN 
knowingly much less the amount of memory available and know (thanks to 
"Process Explorer" by Sysinternals) that this limitation is in really beated 

My program is not simple but I can send an example if you consider it 

  • Prev by Date: Re: Manipulate with variable number of controls
  • Next by Date: Re: square roots in Q[r]
  • Previous by thread: Re: Controlling Memory Usage from JLink
  • Next by thread: Custom ContourLabels in Contour Plots