Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Garbage Collection is used in many production quality applications. Xcode, Automator, System Preferences and several other system applications are GC'd, and you can expect that trend to continue over time.</p> <p>As well, many developers have embraced GC and are using it exclusively in their applications. Intuit's new versions of Quicken and QuickBooks for the Mac are garbage collected, for example.</p> <p>There are a number of advantages of GC, too. Off the top of my head and from personal experience:</p> <ul> <li><p>it makes multithreading easier; a simple assign is an atomic declaration of ownership</p></li> <li><p>it offloads a bunch of memory management to other cores; it is naturally concurrent and offloads a bunch computation from the main thread (or computation threads)</p></li> <li><p>in many cases, allocation and deallocation can happen entirely within the context of a thread, thus eliminating any need for global synchronization or locking</p></li> <li><p>the collector has gotten faster with each release of Mac OS X and that trend will continue (just as it has with the rest of the system). By offloading more of your app's computational load to the system provided frameworks, your app will gain more and more from optimizations to the underlying system.</p></li> <li><p>because the collector has intimate knowledge of the object graph -- of the pointers between objects -- in memory, it makes analysis and debugging significantly easier. Instead of "where did this dangling pointer come from?", the question is now "Give me a list of reasons why this object is sticking around longer than I think it should?".</p></li> </ul> <p>This isn't to say that there isn't work to do to make your application work optimally under GC. There certainly are such tasks!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload