转自javaeye社区 http://www.iteye.com/topic/25053
JVM jvm是jre里头一个动态连接函数库,jdk里面的jre一般用于运行java本身的程序,比如javac,等等.programfiles下面的jre用于运行用户编写的java程序. JRE下的bin\client 或者 bin\server 的jvm.dll就是JVM了 当一台机器上有多个jvm可选择的时候,jvm的选择步骤: 1)当前目录有没有jre目录(不准确), 2)父目录下的jre子目录 3)注册表HEKY_LOCAL_MACHINE\SoftWare\Java\Java Runtime Environment\ 所以当运行的是jdk\bin\java.exe的时候,用的jre是bin的父目录jdk下面的jre\ 运行java.exe找到了jre后有一个验证程序,验证jre和java.exe的版本是否一致,如果不一致则会发生错误
- java -verbose:class Main 显示调用的详细信息
- classloader的两种载入方式:1)pre-loading预先载入,载入基础类 2)load-on-demand按需求载入 只有实例化一个类才会被classloader载入,仅仅申明并不会载入