<p>Hi. Taavi. </p><p>Thanks.</p><p> <a href="http://erlang.org/faq/how_do_i.html#5.15" target="_blank">http://erlang.org/faq/how_do_i.html#5.15</a><br></p><p>really help.  Although I insist on I wrote the correct program(Use tail recursion, etc), but I confess I know little how to " Limit atom table growth. Check message queues size. Look for runaway processes. use erlang:system_monitor/1,/2" .</p>
<p>I think erlang/mnesia designers and implementors are doing well so I can use it like a idiot. (I lost confidence in SqlServer because its perfomance when dealing with 100M records, need create big index and is still slow. So I move to mnesia and continue finding some database except Oracle.  Hope it can solve my problem.)</p>
<p>-----------------------------------------------------------------------------------------</p><p>If you run out of memory, strange things will start to happen regardless of language..</p><p>----------------------------------------------------------------------------------------</p>
<p>I agree, but just few hours after encounter erlang memory problem, I start to think about the memory problem. </p><p>I am running erlang on a server(win2003 server R2)  with 8 CPUs and 10G memory. I found when erlang consumed ~800M - 1.5G memory, it will crash itself. Actually meantime OS have ~7G memory free but erl can't use it.  I start to wonder why can't erlang spawn another real OS erlang process then share some memory, then it can have memory more than 1.5G. I know on 32bit system each process has 4G limitation and actually it can only use less than 3G. ( I tested my C# program, it would throw OutOfMemory exception too when it consumed ~800M - 1.5G memory. But it didn't crash.)</p>
<p>That's why in my previous I have to create several nodes to spawn processes, with each node run 20 proceses, each node only consume ~100M memory so it didn't crash.</p><div class="gmail_quote">Thanks again for reply. Just hope erlang can have a more elegant way to handle memory problem. </div>
<div class="gmail_quote"></div><div class="gmail_quote"></div><div class="gmail_quote">On Thu, Feb 12, 2009 at 2:09 AM, Taavi Talvik <span dir="ltr"><<a href="mailto:taavi@uninet.ee">taavi@uninet.ee</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="Ih2E3d"><br>
On Feb 11, 2009, at 7:09 PM, Yang Zhang wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
After 2 weeks programming and running with erlang program, I got lots<br>
of memory error and erl crashed more than 50 times<br>
</blockquote>
<br></div>
...<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Crash dump was written to: erl_crash.dump<br>
eheap_alloc: Cannot allocate 373662860 bytes of memory (of type "heap").<br>
</blockquote>
<br>
</div><a href="http://erlang.org/faq/how_do_i.html#5.15" target="_blank">http://erlang.org/faq/how_do_i.html#5.15</a><br>
<br>
Look around for processes which grow uncontrolled.<br>
Split them up. Use tail recursion. Limit atom table growth. Check<br>
message queues size. Look for runaway processes. use erlang:system_monitor/1,/2<div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I am using C#/SqlServer to develop program. I haven't seen anytime<br>
sqlserver open a table with 6M table will crash itself, I even tried<br>
to open a 50M records table.<br>
Why erl system so volunerable?<br>
<br>
Is crash the better way than only ternimate the problem process? Don't know why.<br>
<br>
Also I have fell in love with erlang, but its so unstable behavior<br>
make it far away from my commerial program.<br>
</blockquote>
<br>
<br></div>
If you run out of memory, strange things will start to happen regardless of language..<br>
<br>
best regards,<br><font color="#888888">
taavi<br>
</font></blockquote></div><br>