深入浅出JAVA类加载和JVM
来源:互联网 发布:宰执天下知乎 编辑:程序博客网 时间:2024/06/05 13:21
我们在电脑上写好的一个Java文件(*.java)是怎样被JVM(Java虚拟机)加载和使用的呢?这样一个原理性的问题,如果要追根溯源,恐怕我说个三天三夜也说不完。我们本文的目的就如标题所讲--------深入浅出,力求简洁明了,你懂的。
1.有关JVM
JVM是Java语言的核心机制之一。英文全称Java Virtual Machine。是Java程序的字节码(*.class)的运行环境。同样也是Java语言跨平台运行的必要条件。可以说,正是由于JVM的存在,才造就了Java语言跨平台的特性。
此话怎讲?JVM是java应用程序和操作系统(Unix,WinXP等)的中间层。java应用程序面对的是运行在具体操作系统上的JVM。我们不妨将JVM想象成翻译,我们(java应用程序)对翻译(JVM)说话,翻译会将话翻译给相应的外国人(具体的操作系统)。至于中间怎么翻译,我们可以不用理会。
*.java----------------->*.class------------------>JVM--------------------->操作系统平台
那么我们来简单了解一下这个翻译的过程。
JVM主要由类加载器(classLoader),字节码校验器,类解释器(InterPreter)组成。我们把前面的图再加工一下,你就能大致明白这三者在整个翻译过程中的作用。
*.class-------------------->类加载器----------------(a)--------------->字节码校验器-------------(b)---------->类解释器-----------(c)-------->操作系统平台
注意,由上图我们能看出,类加载器在翻译过程中首先出场,然后是字节码校验器,最后类解释器登场,完成翻译工作。
对应注释,我们来详细了解下整个过程。
(a)类加载器读取java字节代码,并转换成java.lang.class类的实例。每个java类都维护这一个指向它的类加载器的引用。我们可以通过getClassLoader获取。
(b)字节码校验器检查.class文件内部结构,检查是否符合语言特征的编译规则。
(c)类解释器翻译成各相应平台的机器语言。
同时,JVM还在运行过程中进行着java安全性检查,比如类型安全的引用转化,GC,数组边界检查,NullPointer检查等。
总结来说,就是JVM屏蔽了底层运行平台的差别,实现了一次编译,随处运行。所以,Java是一种解释型语言。
- 深入浅出JAVA类加载和JVM
- 【深入浅出JAVA类加载和JVM】深入浅出JAVA类加载和JVM
- JVM 类加载机制深入浅出
- Java - 类加载器 和 JVM
- JAVA JVM类加载
- Java JVM类加载
- jvm和类加载
- 深入浅出Java 类加载器
- 【java】JVM结构和类的加载原理
- Java再学习-JVM类加载和执行机制
- java jvm-类加载过程
- JAVA小结-JVM加载类
- 【JVM】Java类加载机制
- 深入浅出 java类加载器ClassLoader
- 【Java面试整理之JVM】深入理解JVM结构、类加载机制、垃圾回收GC原理、JVM内存分配策略、JVM内存泄露和溢出
- 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)
- java的I/O、JVM类加载
- java JVM 加载类的顺序
- 七夕,染红了我的相思
- webform控件和一些属性
- Spring的替代方案
- 最大连续子段和
- 6.9.1 企业文件服务器搭建案例(1)
- 深入浅出JAVA类加载和JVM
- 关于C语言中的未初始化变量的值
- Just what is SMB?
- 泛型(Generic)
- hdu 1203 I NEED A OFFER!(0/1背包)
- 七夕恋歌
- 9-20队内练习赛 G题 Convex Hull of Lattice Points (来自HDU 3285原题)
- 赵雅智_Java 泛型
- 求解CSDN为啥贴图显示不出来