On 10 April 2013 21:18, Paulo Pinto <pjmlp@progtools.org> wrote:
On Wednesday, 10 April 2013 at 09:15:26 UTC, Manu wrote:
On 10 April 2013 19:07, Dicebot <m.strashun@gmail.com> 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.

Good point. It'd be really great if D implemented optimisations of this sort too one of these days. There's a lot of such opportunities waiting for some attention. I'd be very interested to see what sort of practical difference they make.


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