什么是Java虚拟机?说到虚拟机,又想到西游记也是个虚拟故事...文体两开花...多多关注

        Java虚拟机(Java Virtual Machine)是java的核心和基础,是处于java编译器和os平台之间的虚拟处理器。它是一种利用软件方法实现的抽象的计算机基于下层的操作系统和硬件平台,是一个可以执行Java字节码的虚拟机进程。

        要知道Java被称为跨平台的语言,其中核心就在于Java虚拟机,Java是解释型语言,不能被计算机直接理解,需要通过Javac编译器编译成二进制的.class字节码文件,再通过jvm当中的java解释器将.class文件解释成对应平台的机器码执行,也就是说靠Java虚拟机来实现Java的跨平台功能。

      Java虚拟机的内存

        Java虚拟机内存主要包括五个部分:

        1.程序计数器

        程序计数器(又称PC寄存器)是用于存储每个线程下一步将执行的JVM指令,如该方法为native的,则PC寄存器中不存储任何信息,每个线程都有自己独立的程序计数器。是Java内存中读取最快的部分,也是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

        2.Java虚拟机栈

        JVM栈是线程私有的,每个线程创建的同时都会创建JVM栈,每个方法被执行时都会同时创建一个栈帧(Stack Frame)用于存储局部变量表、操作栈、动态链接、方法出口等信息。

        3.Java堆

        堆是JVM用来存储对象实例以及数组值的区域,是JVM中内存中最大的一块,可以认为Java中所有通过new创建的对象的内存都在此分配,Heap中的对象的内存需要等待GC进行回收。 堆是JVM中所有线程共享的。

        4.方法区域

        方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局共享的,在一定的条件下它也会被GC,当方法区域需要使用的内存超过其允许的大小时,会抛出OutOfMemory的错误信息。

        5.运行时常量池

        存放的为类中的固定的常量信息、方法和Field的引用信息等,其空间从方法区域中分配。

        

猜你喜欢

转载自blog.csdn.net/weixin_41328649/article/details/85301094