Chapter1
-XX:HeapDumpOnOutOfMemory - Creates a heap dump file
-Xms - start up heap size
-Xmx - Max Heap size
-Xmn - Sets Young Generation space which initially 1/3 of total heap size. When specifying this both -Xms & -Xmx should be greater than this number.
#If there is an exact match between the number and types of arguments specified in the method call and the method signature of an overloaded method then that is the method that will be invoked.
#Primitive types can be widened (e.g. a byte can widen to an int).
#Objects can be widened (e.g. an Integer can be widen to an Object).
#Wrapper types cannot be widened to another wrapper type (e.g. a Byte cannot widen to an Integer).
#Primitive types can (since Java 5) be boxed (e.g. an int can be boxed as an Integer).
#Primitive types can be boxed and then widened (e.g. an int can be boxed as an Integer and then widened to an Object).
#Primitive types cannot be widened and then boxed (e.g. a byte cannot widen to an int and then be boxed as an Integer).
#Wrapper types cannot be unboxed but not then widened (e.g. an Integer can be unboxed to an int).
#Wrapper types cannot be unboxed and widened (e.g. a Byte can be unboxed to a byte and then widened to an int).
#Widening a primitive type will be chosen ahead of boxing (e.g. widening a byte to an int will be chosen ahead of boxing to a Byte).
#Unboxing an object will be chosen ahead of widening (e.g. unboxing an Integer to an int will be chosen ahead of widening to a Object).
#A primitive type will be widened to the smallest available primitive (e.g. widening a byte to an int will be choosen ahead of widening to a long).
#A method using varargs will only be chosen if is there is no other overloaded version that is applicable.