<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Oct 15, 2015 at 6:57 PM, Jean Menezes da Rocha <span dir="ltr">&lt;<a href="mailto:jean@menezesdarocha.info" target="_blank">jean@menezesdarocha.info</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello,<div><br></div><div>I am writing a program that stores a large number of objects in the memory (thousands of), and then calls a &quot;play&quot; method from each one. As it goes playing, RAM usage increases drastically and a weird lag/clicking happens. Is there a possible method to clear memory (perhaps by discarding objects already played) while the script is in execution? Is there any alternative when calling a large number of functions over short periods of time?</div><div><br></div><div>For the sake of example, take this lame pseudocode:</div><div><br></div><div>class Foo {</div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">int fooX;<br></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">float fooY;<br></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">int fooZ;<br><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>string fooBla;<br>string fooBlu;</blockquote><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div>fun void set(int x, float y, int z, string bla, string blu) {<br></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div>x =&gt; fooX;</div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div>y =&gt; fooY;</div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div>z =&gt; fooZ;</div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><div><div>bla =&gt; fooBla;</div></div></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">blu =&gt; fooBlu;<br></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">}<br></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><br></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">fun void play() {<br></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>SinOsc s =&gt; Gain g =&gt; dac;<br><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>if ( x &gt; 2 ) { fooY * x =&gt; s.freq; }<br><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>else { if ( z &lt; 4 ) { fooY * z =&gt; s.freq; }  else { fooY =&gt; s.freq; } }<br><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>0.5 =&gt; g.gain;<br><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote>if ( bla == &quot;fast&quot; ) { 10::ms =&gt; now; }<br>else { if ( bla == &quot;slow&quot; ) { 500::ms =&gt; now; } else { 200::ms =&gt; now; }<br></blockquote></blockquote></div></blockquote><div><br></div><div>You may want to try unchucking from the dac here<br><br></div><div>s =&lt; g;<br></div><div>g =&lt; dac;<br></div><div><br>See<br><br><a href="http://chuck.cs.princeton.edu/doc/language/ugen.html#connect" target="_blank">http://chuck.cs.princeton.edu/doc/language/ugen.html#connect</a><br><br></div><div>I haven&#39;t seen memory usage slow ChucK down, but connecting too many things to dac sometimes does.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px"></blockquote></blockquote><blockquote style="margin:0px 0px 0px 40px;border:medium none;padding:0px">}<br></blockquote>}<div><br></div><div>(now imagine a function that sets thousands of Foo objects, stores them into an array and afterwards iterate through said array, calling .play() function for each item. at this point things become <i>very</i> slow because of too many objects filling up the memory).</div><div><br></div><div>Even using --silent, the script is eventually sluggish because memory still is filled up.</div><div><br></div><div>I hope you can point me to the right direction!<span><font color="#888888"><br><div>-- <br><div><div dir="ltr"><span style="color:rgb(136,136,136)">Jean Menezes da Rocha</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Compositor</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Professor -- Faculdades Est</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Mestre e Doutorando em Composição pela Universidade Federal da Bahia</span><br></div></div>
</div></font></span></div></div><br></blockquote></div><br></div><div class="gmail_extra">Hope this helps!<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">   michael<br></div></div>