News for hackers. Stuff that matters.
Re:Pauseless GC for OpenJDK [video] by jandrewrogers on Monday September 22, 2014 @12:05AM (#8349182)
For what it is worth, GCs are a major headache generally for system level code. The expense in terms of system behavior are far higher than the implied CPU time due to the scheduling issues. This has always been the challenge of GC-centric environments.

I think there are two big challenges for garbage collected environments with respect to core server systems level code. First, an acceptable pause needs to be reliably sub-millisecond or it breaks the userspace schedulers in a lot of high-performance server code. In the video presentation, they had a difficult time guaranteeing 10 milliseconds. They are working on it but this is a problem. Second, most high-performance server engines eliminate almost everything that looks like context-switching, mostly because it is very expensive on modern hardware. The idea that there may be hundreds or even thousands of threads running on real servers does not comport with the reality of a lot of server environments where context switching is severely restricted for good reason. The idea that it makes sense to have a lot of background processes cleaning up the memory allocation contradicts many well-conceived software architectures. These days, everything is explicitly scheduled and bounded if server performance matters.

Re:Pauseless GC for OpenJDK [video] by ANTSANTS on Monday September 22, 2014 @12:12AM (#8349200)
>In the video presentation, they had a difficult time guaranteeing 10 milliseconds.

In fairness, the estimate was 10 milliseconds for 100 GB heaps. Not everything (especially, I'd guess, programs that benefit from pauseless GC) deals with that much memory.

Re:Pauseless GC for OpenJDK [video] by pjmlp on Monday September 22, 2014 @03:48AM (#8349635)
I used to be big into GC, specially due to my experience with the Oberon system, which showed me workstations developed in GC enabled systems programming languages are possible.

This also lead me to research systems like Mesa/Cedar, Modula-2+, Modula-3, or more recently Singularity.

Different approaches were taken, RC with local GC for collecting cycles (Cedar/Modula-2+), GC as kernel service (Modula-2+/3, Oberon), static binaries with runtime enabled GC Syngularity.

So nowadays I tend to refer to automatic memory management in general, be it GC, RC, RAII or via dataflow analysis.

System programming languages with GC trace back to Algol 68.

Yet, besides Apple work with ARC or Microsoft with Singularity/COM/WinRT, there isn't much happening in mainstream OS mostly due to backwards compatibility to the culture that followed UNIX instead of Xerox PARC systems.

If systems like Mesa/Cedar had the focus and money spent that JVM or V8 enjoy, the computing world would be a bit different.