JAVA运行基础
参考:https://blog.csdn.net/shaochenshuo/article/details/78507132;https://blog.csdn.net/jacksonary/article/details/80334040;https://blog.csdn.net/qq_26545305/article/details/70241939;百度百科等...
环境:win10,jdk1.8.0_161
JAVA、JDK、JRE 区别
JAVA 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。
JDK 是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。 包含client端和server端(32位),需要配置环境变量。只有JDK下才有javac.exe
1541665499150.pngJRE 中只有client运行环境(32位),不需要配置环境变量,JRE在安装过程中,会把java.exe拷贝到系统环境变量目录中。
然而,实际上我们电脑的JDK中只有这一个虚拟机动态链接库jvm.dll,根本没有jre/bin/client目录
1541667293865.png这是因为,在64位系统中是无法切换到Client模式的,默认只工作在Server模式下。
JVM 的 Client模式,Server模式
可以通过命令查看自己目前的JVM信息
1541666627184.pngHotSpot VM 里,Client VM 和 Server VM是共用一套解释器的。
Java HotSpot Client VM:为在客户端环境中减少启动时间而优化;比较适合桌面程序,它会做一些例如像快速初始化,懒加载这一类的事件来适应桌面程序的特点。
Java HotSpot Server VM:为在服务器环境中最大化程序执行速度而设计; 适合做服务器程序,一些针对服务器特点的事情,比如预加载,尤其在一些并发处理上,是会做更多的优化。
64位默认为Server模式,jre/bin/下面只有server目录。32位的目录里既有server又有client,可以修改Server模式,打开%JAVA_HOME%/jre/lib/i386/jvm.cfg
1541671226219.png通过注释我们知道,下面两行命令谁放在前面谁是默认虚拟机
jvm.dll装载过程
前面说,JRE安装时是把java.exe复制到系统环境变量目录了。而之所以能够使用,是因为java.exe只是一个执行程序的外壳,它会装载jvm.dll,这个动态链接库才是实际操作处理所在。
JVM环境的创建包括两部分:jvm.dll文件的查找和装载
jvm.dll的查找,通过java_md.c的CreateExecutionEnvironment方法实现。
网友评论