https://medium.com/@travelswithkrishna/java-memory-management-day-24-understanding-garbage-collection-and-memory-leaks-624340970451