I am reading Efficient Android Threading, which says
Instead of using nested classes with outer class references, it is preferred to use static inner classes because they reference only the global class object and not the instance object. This just mitigates the leak, because all explicit references to other instance objects from the static inner class are still live while the thread executes.
But I am not clear why it mitigates the leak. If all explicit references to other instance objects from the static inner class are alive, isn't it a cause of memory leak contrary to the above explanation ?