<i>You should only care about that when it does prevent pose a problem</i><p>Then you are setting up yourself for a lot of trouble.<p>Another part of memory management is thinking about ownership (to which the substring discussion is very much related) and it pains me to see how many bugs are caused by code like:<p><pre><code>   Foo getFoo() {
     return myFoo;
   }
</code></pre>
Where Foo is some mutable class and the invariants of the wrapping class suddenly don&#x27;t hold anymore because some outside code is mutating the Foo instance through the pointer&#x2F;reference.<p>Throw in some amount of concurrency and you get something that is not only hard to debug but also difficult to reproduce.<p>tl;dr: in a GCed language you need to think about memory management and ownership as well.<p>(Note: I am not arguing against garbage collection.)