JVM

来源:互联网 发布:vr图片展示软件 编辑:程序博客网 时间:2024/06/08 02:21

1. JVM => Java 语言平台无关性,“一次编译,到处运行”。


2. JREJDKJVM关系

(1) JREjava runtime Environmentjava运行环境,也就是java平台,java程序都在JRE下才能运行;

(2) JDKjava development kit,程序开发者编译,调试java程序用的开发工具包。Jdk也是java程序,也需JRE才能运行。为保持jdk的独立性和完整性,jdk的安装过程中,JRE也是安装的一部分;

(3) JVM虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现。JVM有自己完善的硬件架构。如处理器、堆栈、寄存器、相应的指令系统。

 

3. JVM原理

Jvmjava核心和基础,在java编译器和OS平台之间的虚处理器,可在上面执行java字节码程序。

Java编译器只需要向JVM,生成jvm理解的代码或字节码文件,java源文件经编译成字节码程序,通过jvm将每条指令翻译成不同平台机器码,通过特定的平台运行。


4. JVM体系结构

(1) 类装载器(classloader) 装载.class文件

(2) 执行引擎 执行字节码,或者执行本地方法;

(3) 运行时数据区:方法区、堆、栈、pc寄存器、本地方法栈。



5. JVM运行时数据区

(1) PC寄存器:存储下一步执行的JVM指令,若该方法为native,则pc不存储任何信息。=》线程私有,无OOM

(2) 栈:存储基本类型变量[8种基本数据类型:booleancharbyteshortintlongdoublefloat];部分返回结构及stack Frame.非基本类型的对象在栈上仅存放一个指向堆上的地址[本地变量的私有拷贝]=》线程私有,异常:StackOverflowError,OutOfMemoryError

(3) 堆:存储对象实例;数组值;new的对象内存都在此分配;线程共享堆,因此对象内存分配需要加锁。静态成员变量跟随着类定义一起放在堆上;一个对象的成员变量可能伴随着这个对象自身存放在堆上,不管这个成员变量是原始类型还是引用类型。=》异常:OOM

(4) 方法区:即持久代;存放加载的class类信息[名称、修饰符]field字段信息、method方法信息;类中static静态成员变量;类中final类常量。=》异常OOM

虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫Non-Heap(非堆),目的应该是与Java堆区分开来。

(5) 运行常量池:

常量池(Constant Pool常量池数据编译期被确定,是Class文件中的一部分。存储了类、方法、接口等中的常量,当然也包括字符串常量。

字符串池/字符串常量池(String Pool/String Constant Pool是常量池中的一部分,存储编译期类中产生的字符串类型数据。

运行时常量池(Runtime Constant Pool):方法区的一部分,所有线程共享。虚拟机加载Class后把常量池中的数据放入到运行时常量池。

(6) 本地方法堆栈:Native Method StacksJVM采用本地方法堆栈来支持native方法的执行,此区域用于存储每个native方法调用的状态。



阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 客厅书房 美式书房 书房卧室 书房客厅 现代书房 小书房 阳台做书房 书房字画 书房效果 客厅兼书房 书房书房 书房柜子 书房照片 飘窗书房 书房摆设 书房中式 书房装潢 我的书房 书房式客厅 书房灯具 卧室改书房 书房对联 书房改造 书房办公桌 书房桌子 书房四宝 微书房 书房挂画 书房改卧室 书房样板间 书房背景 书房摆放 书房阳台 书房床 样板房 书房 书房名字 书房的布置 书房罗汉床 书房的灯 书房题字 温馨书房