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

什么是Java虚拟机?说到虚拟机,又想到西游记也是个虚拟故事...文体两开花...多多关注,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的引用信息等,其空间从方法区域中分配。

相关文章暂无相关文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值