Hacker News new | past | comments | ask | show | jobs | submit login

If you compare RAII and GC, RAII looks better to me practically in every aspect. The only advantage of GC over RAII is perceived simplicity (developers don't need to think about ownership specifics). But the price for it is too high (unpredictability), and that simplicity quickly deteriorates into overblown complexity when people hit problems caused by GC. Pragmatically, RAII is simply better and cleaner, as well as fits better with concurrency safety which implies clarity in memory ownership.



RAII does not work in all cases, though.

RAII for shared resources also induces cache problems if not implemented with lock free algorithms, which are quite hard to get right without some GC help.

There is also the issue for cyclic data structures and a stop the world effect when destroying big data structures.

Personally, I favour GC with (with/using/defer/scope) than pure RAII and was a bit disappointed that the C+11 GC API proposal was just partially adopted into the standard.


Combining RAII and GC (explicitly choosing what to use for various data) can be an interesting hybrid approach. Looks like Rust does exactly that, allowing you to explicitly define which data is garbage collected (while the rest is handled with standard RAII):

http://static.rust-lang.org/doc/master/std/gc/index.html




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: