Re: Garbage collection problem
- To: mathgroup at smc.vnet.net
- Subject: [mg51953] Re: Garbage collection problem
- From: sean_incali at yahoo.com (sean kim)
- Date: Fri, 5 Nov 2004 02:19:18 -0500 (EST)
- References: <cm7d0u$lho$1@smc.vnet.net> <cma0s1$8vg$1@smc.vnet.net> <cmcmbs$ics$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
> Thanks for looking at this. However, your suggestion actually made
> things worse. Now, my memory usage increases each time I "run" example
> a, as well as example b.
are you monitoring it as the module is running? like by use of task
manager type of program?
try this...
In[25]:=
(*Setup*)eq={9.8*(0.99*Cos[qS[t]]+0.01*Cos[qH[t]+qS[t]])-0.01*Sin[qH[t]]*
qH'[
t]*qS'[t]-0.01*Sin[qH[t]]* qH'[t]*(
qH'[t]+qS'[t])+(0.001+0.01*Cos[qH[t]])* qH''[t]+(
0.982+0.02*Cos[qH[t]])*
qS''[t]\[Equal]0, 0.1*Cos[qH[t]+
qS[t]]+0.01*Sin[qH[t]]*qS'[t]^2+0.001*
qH''[t]+(0.001+0.01*Cos[qH[t]])*qS''[t]\[Equal]0,
qS[0]\[Equal]1.71,qS'[0]\[Equal]-1.01,qH[0]\[Equal]2.84,
qH'[0]\
\[Equal]1.1}; vars={qS[t],qH[t],qS'[
t],qH'[t]}; test=qH[t]≥Pi&& 2*Cos[qH[t]/2]*
Cos[qH[t]/2+qS[t]]*Sin[Pi/180]+ Cos[Pi/180]*(Cos[
qS[t]]*Sin[qH[
t]]+(1+Cos[
qH[t]])* Sin[qS[t]])<-0.01&&
Cos[qH[t]+qS[t]]*Derivative[1][qH][
t]+(Cos[qS[t]]+Cos[qH[t]+qS[t]])*
Derivative[1][qS][t]<-0.01||
Abs[qH[t]]<Pi/6||Sin[qS[t]]<1/4; $HistoryLength=0; (*end*)
In[26]:=
arun[do_]:= Module[{}, Do[ soln=NDSolve[eq,vars,{t,0,2}][[1]];, {do}]
]
In[36]:=
arun[20]
MemoryInUse[]
Share[]
Share[]
arun[200]
MemoryInUse[]
Out[37]=
2999248
Out[38]=
264
Out[39]=
0
Out[41]=
2998864
above shows that once you use Module in combination with Share[] (
twice), the memory usage between runnign the module 20x vs 200x is
relatively miniscule.
out38 and 39 show how much Share[] has released.
similar with the example b.
In[42]:=
brun[do_]:= Module[{}, Do[ soln=NDSolve[eq,vars,{t,0,
2},StoppingTest->test][[1]]; , {do}]]
In[43]:=
brun[20]
MemoryInUse[]
Share[]
Share[]
brun[200]
MemoryInUse[]
Out[44]=
3057560
Out[45]=
456
Out[46]=
0
Out[48]=
3908176
> Is this problem related to my version/platform of Mathematica?
i'm running windoze xp Mathematica 5.0
> Does anyone know of an equivalent for "ls -l" that I could run on
> Mathematica to track down the memory hog? I tried several things, but
> it looks like this memory is out of my reach.
>
> For example,
> (* begin *)
> objects = Names[];
> sizes = Table[ByteCount[objects[[i]]], {i, Length[objects]}];
> Total[sizes]
> (* end *)
> Running this code snippet doesn't show any increase in the memory used
> by my objects, even though MemoryInUse[] does. Therefore, I want to
> know, where is my memory going?