https://medium.com/@omkarbhavare2406/understanding-java-compiled-or-interpreted-variables-garbage-collection-and-memory-management-4d0823e21c1f