1, class loader could inherit the classes object from its parent class loader, e.g. bootstrap class loader.
2, when use loader to load class,
e.g. Class.forName("Foo");
it will check the class is existed or not. if yes, stop load.
else will go on the loading process:
search the class file from classpath
invoke loadClass() method: assemble the arrays of bytes into the classFile structure.[p.s. it could delegate the loading to another class loader]
then, invoke defineClass() method, create the class object from the classFile structure.
Q:
1, one class only could be loaded once in one class loader
2, In one jvm, different class loaders maybe have different class pool
reference:
http://books.google.com/books?id=Ojk25QoiTrYC&pg=PA8&lpg=PA8&dq=Loading+Linking+Initializing&source=bl&ots=RI4lZ2THTG&sig=YrF_6S_inr4eV72vEBfKMU53fv8&hl=en&ei=DqbxSvjHEaGG6wOZ-Ki7Bg&sa=X&oi=book_result&ct=result&resnum=7&ved=0CCUQ6AEwBg#v=onepage&q=Loading%20Linking%20Initializing&f=false
2, when use loader to load class,
e.g. Class.forName("Foo");
it will check the class is existed or not. if yes, stop load.
else will go on the loading process:
search the class file from classpath
invoke loadClass() method: assemble the arrays of bytes into the classFile structure.[p.s. it could delegate the loading to another class loader]
then, invoke defineClass() method, create the class object from the classFile structure.
Q:
1, one class only could be loaded once in one class loader
2, In one jvm, different class loaders maybe have different class pool
reference:
http://books.google.com/books?id=Ojk25QoiTrYC&pg=PA8&lpg=PA8&dq=Loading+Linking+Initializing&source=bl&ots=RI4lZ2THTG&sig=YrF_6S_inr4eV72vEBfKMU53fv8&hl=en&ei=DqbxSvjHEaGG6wOZ-Ki7Bg&sa=X&oi=book_result&ct=result&resnum=7&ved=0CCUQ6AEwBg#v=onepage&q=Loading%20Linking%20Initializing&f=false