Java Finalization's Memory-Retention Issues