JVM虚拟机

    xiaoxiao2021-03-25  82

    简书:http://www.jianshu.com/p/8886efcf7f91

    Java虚拟机的原理。 所谓虚拟机,就是一台虚拟的机器,他是一款软件,用来执行一系列虚拟计算指令,大体上虚拟机可分为系统虚拟机和程序虚拟机,他们完全是对物理的计算的仿真,提供一个可以运行完整操作系统的软件平台。

    程序虚拟机典型代码就是Java虚拟机,他专门为执行单个计算程序而计算,在Java虚拟机中执行的指令我们称为Java字节码指令,无论是系统虚拟机还是程序虚拟机,在上面运行的软件都被限制于虚拟机提供的资源中。

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

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

    类加载系统:负责从文件系统或者网络加载Class信息,加载的信息存放在一块称之为方法区的内存空间。方法区:存放类的信息,常量信息,常量池信息,包括字符串字面量和数字常量Java堆:在Java虚拟机启动的时候建立Java堆,他是Java程序最主要的内存工作区域几乎所有的对象实例都存放到Java堆中,堆空间是所有线程共享。直接内存:JavaNio库允许Java程序直接内存,从而提高性能,通常直接内存速度会优于Java堆,(把数据直接放到内存中)RedisJava栈:每个虚拟机线程都有一个私有栈,一个线程的Java栈在线程创建的时候被创建,Java栈保存着局部变量,方法参数,返回值等。本地方法栈:和Java栈非常类似,最大不同为本地方法栈用于本地方法调用,垃圾回收系统:Java的核心,也是不可少的,Java有一套自己的进行垃圾清理的机制,开发人员无需手工清理.PC寄存器:寄存器也是每个线程私有的空间,Java虚拟机会为每个线程创建pc寄存器执行引擎:虚拟机的核心组件就是执行引擎,他负责执行虚拟机的字节码,一般会先进行编译成机器码后执行

    总结

    具体划分为如下5个内存空间(非常重要)

    栈:存放局部变量堆:存放所有new出来的东西方法区:被虚拟机加载是类信息,常量,静态常量等程序计数器(和系统相关)本地方法栈
    转载请注明原文地址: https://ju.6miu.com/read-37110.html

    最新回复(0)