ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java虚拟机内存结构(1/5)

来源:网络整理     时间:2018-07-27     关键词:

本篇文章主要介绍了" Java虚拟机内存结构",主要涉及到方面的内容,对于Javajrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: Java虚拟机的内存结构 在程序运行时,JVM包含了两种运行时数据区,一种是与JVM同步存在的,在JVM启动时一直存在,直到JVM退出时才销毁,由所有...

Java虚拟机的内存结构

      在程序运行时,JVM包含了两种运行时数据区,一种是与JVM同步存在的,在JVM启动时一直存在,直到JVM退出时才销毁,由所有的线程共享;另一种是与每个线程同步存在,线程退出则销毁。


 Java虚拟机内存结构

运行时数据区包含如下几部分:

1, 程序计数器
       每一个Java线程都有一个PC寄存器,用以记录在线程切换回来后恢复到正确的执行位置。

       如该线程正在执行一个Java方法,则计数器记录的是正在执行的虚拟机字节码地址,如执行native方法,则计数器值为undefined。

      因为只是记录线程执行时的返回地址,因此内存是足够使用的,该区域也是唯一一个在JVM中没有规定任何OutOfMemoryError情况的区域。

2,JVM栈

      每个线程保持一个JVM私有栈,与线程一起创建,保存栈帧,栈帧用来存储局部变量,中间结果,以及方法返回值等。

      该区域会抛出如下异常:

  • If the computation in a thread requires a larger Java virtual machine stack than is permitted, the Java virtual machine throws a StackOverflowError.
  • If Java virtual machine stacks can be dynamically expanded, and expansion is attempted but insufficient memory can be made available to effect the expansion, or if insufficient memory can be made available to create the initial Java virtual machine stack for a new thread, the Java virtual machine throws an OutOfMemoryError.

3,堆

       堆空间是JVM中所有的线程共享的区域,在虚拟机启动时创建,堆空间不需要是连续的。用于存储所有的对象实例和数组。是垃圾收集管理的主要区域。

       该区域会抛出如下异常:

     The following exceptional condition is associated with the heap:

  • If a computation requires more heap than can be made available by the automatic storage management system, the Java virtual machine throws an OutOfMemoryError.

4,方法区:

       方法区是JVM中所有线程共享的区域,在虚拟机启动时创建,堆空间不需要是连续的。用于存储已加载的每个class的信息,比如运行时的常量池,字段和方法数据,方法的代码等。

       方法区是堆的逻辑组成部分,但可以选择不对这个区域进行垃圾收集。方法区并不等同于永久代,但在虚拟机HotSpot实现时,方法区是在永久代中(JDK1.6及以下版本)。

       该区域会抛出如下异常:

相关图片

相关文章