大连普兰店网站建设,做网站使用什么语言好,专业网站建设哪家好,hishop官网JVM 是java虚拟机。 作用#xff1a;运行并管理java源码文件锁生成的Class文件#xff1b;在不同的操作系统上安装不同的JVM#xff0c;从而实现了跨平台的保证。一般在安装完JDK或者JRE之后#xff0c;其中就已经内置了JVM#xff0c;只需要将Class文件交给JVM即可 写好的… JVM 是java虚拟机。 作用运行并管理java源码文件锁生成的Class文件在不同的操作系统上安装不同的JVM从而实现了跨平台的保证。一般在安装完JDK或者JRE之后其中就已经内置了JVM只需要将Class文件交给JVM即可 写好的java源文件会编译生成16进制的字节码文件(**.class,cafe babe开头有相应的格式可交由jvm执行 1.类加载 A. 首先是Loading阶段找到jvm执行字节码文件的前提是需要找到对应的字节码文件。由此可知下一步就是通过类加载机制对 Class文件进行加载其实是在硬盘上查找并通过IO读入字节码文件【使用到类时才会加载java这里采用的时懒加载机制例如调用类main()方法时new对象等在加载阶段会在内存生成一个代表这个类的java.lang.Class对象】【双亲委派】 双亲委派机制进行类加载加载类的时候先由Custom ClassLoader 自定义类加载器 委托上级 App ClassLoader应用类加载器 再委托上级Extension ClassLoader 扩展类加载器 最后委托给 Bootstrap ClassLoader 根加载器 由根加载器优先去加载此类。如果 根加载器未在自己的工作范围内找到则向下一级委托一旦有加载器加载后则不会被重复加载。根加载器 和扩展类加载器一般是加载 java自带的一些 类【这样是一个沙箱机制防止 用户随意篡改已有的类比如用户自己写一个 java.lang.String类用户自己写的类是没法被加载】 当然双亲委派机制也是可以破坏的ClassLoader里面的 复写loadclass方法改变加载方式例如:Tomcat B.找到对应的class文件进行加载的时候会打散.class的信息类文件字节码流静态存储结构 放入 JVM的一块区域【Method Area】,方法区所有的线程共享的一块区域 C. 类文件的所对应的Class对象 交给jvm 放入【Heap】堆中也是所有线程共享的一块区域 2.链接 Linking 加载类文件后需要进一步处理 a. 验证 verify 保证类被加载的类的正确性有验证规则 b. 准备 prepare 为类的静态变量分配内存空间并将其的值初始化为默认值 。比如 static int a 0 ; 初始化 a0; c. 解析 resolve 将类中的符号引用转换为直接引用 例如目前字节码文件String str 的地址以前是.class 文件中的一个代称这里将会 分配好内存空间直接对应内存中的某一个真实的地址指向 3. 初始化 Initializing 为静态变量进行初始化为真正的值 a 10; 最后 进行使用 以及 卸载