JVM 初识(一)

    什么是虚拟机

虚拟机(Virtual Machine)指通过 软件模拟的具有完整 硬件系统功能的、运行在一个完全 隔离环境中的完整 计算机系统
虚拟系统通过生成现有 操作系统的全新虚拟 镜像,它具有真实 windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,可以独立安装运行 软件,保存数据,拥有自己的独立桌面,不会对真正的系统产生任何影响 ,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作 系统。虚拟系统和传统的虚拟机( Parallels Desktop , VmwareVirtualBoxVirtual pc)不同在于:虚拟系统不会降低电脑的性能,启动虚拟系统不需要像启动 windows系统那样耗费时间,运行程序更加方便快捷;虚拟系统只能模拟和现有 操作系统相同的环境,而虚拟机则可以模拟出其他种类的操作系统;而且虚拟机需要模拟底层的硬件指令,所以在 应用程序运行速度上比虚拟系统慢得多。
流行的 虚拟机软件VMware( VMWare ACE)、 Virtual BoxVirtual PC,它们都能在 Windows系统上虚拟出多个计算机。
                                                                                                                                                                            ----- 来自百度百科。



Java发展至今,出现过很多的虚拟机,最初Sun使用的是一款Classicjava虚拟机,到现在引用最广泛的是HotSpot虚拟机,除了Sun以外,还有BEAJRockit,目前JRockitHotSpot都被Oracle收入旗下,大有整合的趋势。

认识Java虚拟机的基本结构:

1 类加载子系统

2 方法区

3 java

4 直接内存

5 java

6 本地方法区

7 垃圾回收系统

8 PC寄存器

9 执行引擎

基本概念:

1 类加载子系统:负责从文件系统或者网络中加载Class信息,加载的信息存放在一块称之为方法区的内存空间。

2 方法区:存放类信息,常量信息,常量池信息,包括字符串字面量和数字常量等。

3 java堆 :在java虚拟机启动的时候简历java堆,他是java程序最主要的内存工作区域,几乎有所的对象实例都存放到java堆中,堆空间是所有线程共享的。

4 直接内存:javaNIO库允许java程序使用直接内存,从而提高性能,通常直接内存速度会优于java堆。读写频繁的场合可能会考虑使用。

5 java栈:每个虚拟机线程都有一个私有的栈,一个线程的java栈在线程创建的时候被创建,java栈中保存着局部变量,方法参数,同时java的方法调用,返回值等。

6 本地方法栈和java栈非常类似,最大的不同为本地方法栈用于本地方法调用。Java虚拟机允许java直接调用本地方法(通常用C编写)

7 垃圾收系统是java的核心,也是不可少的,java有一套自己的进行垃圾清理的机制,开发人员无需手动清理。

8 PC寄存器:也是每个线程私有的空间,java虚拟机回为每个线程创建PC寄存器,在任何时刻,一个java线程宗师在执行一个方法,这个方法被称为当前方法,如果方法不是本地方法,PC寄存器就会执行当前正在被执行的指令,如果是本地方法,则PC寄存器值为undefined,寄存器存放到当前执行环境指针,程序计数器,操作栈指针,计算的变量指针等信息。

9 执行引擎:是java虚拟机最核心的。它负责虚拟机的字节码。一般先进行变成机器码后执行。

 


猜你喜欢

转载自blog.csdn.net/qq_32230309/article/details/80907389
今日推荐