On Wednesday, 10 April 2013 at 09:15:26 UTC, Manu wrote:
On Wednesday, 10 April 2013 at 08:57:55 UTC, Manu wrote:
That sounds horribly non-deterministic. What if you have 256mb of ram, and
no pagefile, and you fill it up till you have 1mb headroom spare?
It is Erlang, it is not meant to be run on 256Mb RAM ;) It kind of solves
the issue of response latency for GC-enabled software on powerful
enterprise servers. Because with stop-the-world GC you can't do it, does
not matter how powerful your hardware is.
Does not help game dev and small-scale embedded though, that for sure ;)
Well there's always the standing question though, why is JVM and C# so much
faster than D?
They produce a squillion times more garbage than D, yet they're much much
faster. I have come to accept the C# GC in less-intensive realtime
software, it's not so bad.
First of all they require the use of safe references. Pointer manipulation is reserved to unsafe regions, which allows for more aggressive GC algorithms.
Secondly you have years of GC research invested into those runtimes.
Finally they don't offer a single GC, but tunable versions.
Additionally the garbage might be less than what you think, because you may use "new" but the JIT will actually do a stack allocation if it sees the object will be dead at the end of scope.
Some Java related information,
http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/performance-enhancements-7.html