https://divy9t.medium.com/java-garbage-collection-series-part-2-understanding-generational-garbage-collection-and-f853f4954263