您所在的位置:主页 > 新闻资讯 > IT资讯 > Java资讯 >

绍兴java学习班:JVM中怎么存取数据信息?

来源:未知

发布时间:2019-08-26

阅读量:

  我们每天都在编写Java代码,编译,执行,绍兴java学习班很多学员已经了解Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。

  那在整个程序执行过程中,JVM中怎么存取数据和相关信息呢?

  事实上在JVM中是用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。

  根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java虚拟机栈(Java Vitual Machine Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。

  各个部分存储的信息和负责的职能

  1、程序计数器:这个内存区域是Java虚拟机规范中唯一一个没有规定任何OOM(OutOfMemoryError)情况的区域,这是这个区域最大的特点之一,这个区域主要是负责记录正在执行的虚拟机字节码指令地址,即当前线程执行的字节码的行号指示器(注意:JVM不是直接执行Java代码,而是执行.class文件,所以只要其他编程语言能翻译成.class文件一样能放入JVM中执行)。

  2、Java虚拟机栈:和程序计数器一样的是Java虚拟机栈是线程私有,生命周期和线程相同。

  Java虚拟机规范中,对这个区域规定了两种异常状况:

  线程请求栈的深度大于虚拟机所允许栈的深度,将抛出Stack Overflow Error;

  如果虚拟机栈可以动态扩展且扩展时无法申请到足够的内存,会抛出OutOfMemoryError;

  3、本地方法栈:与虚拟机栈作用相似,不过是虚拟机栈为虚拟机执行Java方法提供,而本地方法为虚拟机使用到的Native方法服务,Native方法多是用C++写的。抛出的异常和虚拟机栈相同。

  4、Java堆:Java堆是与前面的区域不同的是:这个区域是被所有线程共享的一块内存区域,用来存放对象实例,并为对象实例分配好内存。

  5、方法区:与Java堆一样,线程共享,用来存储被虚拟机加载的类信息,常量,静态变量。这个区域Java虚拟机规范对其特别宽松,既可以像Java堆那样不需要连续内存,又可以选择固定大小和可扩展。还可以选择不实现垃圾收集,这个区域的内存回收目标主要是针对常量池的回收和对类型的卸载。当无法满足内存分配需求时,将抛出OutOfMemoryError异常。

  6、运行时常量池:是方法区的一部分。用于存放编译期生成的各种字面量和符号引用,同时也会把翻译出来的直接引用也存储在运行时的常量池中,具有动态性。常量不一定只有编译期才能产生,运行期间也可以将新的常量放入池中。

  只有程序计数器不会报出任何相关OOM异常,而Java虚拟机栈有可能会报出OOM或Stack Overflow异常。Java虚拟机栈主要是存储方法的一些信息,能让方法顺利的执行,而Java堆存储的是对象的信息。虚拟机的垃圾回收算法主要在这一块,并且平常调优的区域也是在这一块。

  绍兴java学习班课程简介:

  作为全日制班级,5个月学习,半军事化管理,做到对学员负责。周周有周考,月月有月考。每周周一到周五上课,晚上有晚自习,助教陪同,周六老师带领复习以及考试!每三个月一次课程更新,紧跟企业需求。毕业前期有项目实践,校企合作协议,100+合作企业,企业来校招聘,保证学员顺利毕业!

  报考条件:28岁以下,全日制大专以上学历

  课程优势:名师教导,师资经验可查,小班授课,全程面授,校企合作,费用低于同类机构,性价比高。

  联系方式:18151110983

  招生地址:浙江省绍兴市诸暨市暨阳街道苎萝东路179号广和商业大厦5楼西侧

  以上就是本文的全部内容,希望对大家的java学习有所帮助,如果大家想了解更多干货知识,欢迎来到绍兴java学习班,来上元,学java课程,专注学习效果,为学员创造价值,边工作边学习,快速成长为精英,赶紧加入吧!

免责声明:本站所提供资讯均来源于网友提供或网络搜集,由本站编辑整理, 仅供个人研究、交流学习使用,不涉及商业盈利目的。如涉及版权问题, 请联系本站管理员予以更改或删除。

相关资讯

免费预约试听课程

只要一个电话,即可获得免费试听的机会

选课报班:

×

TOP