"the problem with most asynchronous programming frameworks (Actors, Fork-join, etc) is that when you go to debug an issue, you get thrown into the framework rather than your use of the framework, and this makes debugging hugely more difficult than debugging synchronous execution"

"If building SoftReference cache (typically has values wrapped inside a SoftReference), Brian Goetz suggests instead wrapping the whole cache in a SoftReference, ie the whole whole cache is dumped under memory pressure - any elements with hard references outside the cache in the main app will stay anyway, and this frees up a lot more memory quickly"