jvm运行时数据区域有哪几部分组成,各自作用,jvm区域包括哪些

  jvm运行时数据区域有哪几部分组成,各自作用,jvm区域包括哪些

  先看图:

  如何解决写爬虫IP受阻的问题?立即使用。

  java相关视频教程:Java课程

  1.程序计数器(PC)

  是线程专有的。它是一个小内存,是当前线程执行的字节码的行号指示符,也是Java虚拟机规范中唯一没有指定为OOM(OutOfMemoryError)的区域。

  2.Java虚拟机栈

  是线程专有的。生命周期和线程是一样的。是Java方法执行的内存模型。执行每个方法都会创建一个堆栈框架,用于存储局部变量和操作数(对象引用)。局部变量所需的内存空间量是在编译期间分配的。因此堆栈帧的大小不会改变。

  有两种异常情况:

  1)如果线程请求深度大于堆栈深度,将抛出StackOverFlowError。

  2)如果栈在动态扩展时不能请求足够的内存,将抛出OOM。

  3.堆

  Java堆由所有线程共享。在虚拟机启动时创建。它保存对象的实例和数组。它占用了最大的内存。可分为新生代(年轻区)和老区(老区)。新生代分为伊甸区和塞维尔区。服务区分为从空间区和到空间区。伊甸园区和服务器区的内存比为8: 1。当扩展内存大于可用内存时,将抛出OOM。

  4.本地方法栈

  本地方法堆栈是线程专有的。类似于Java虚拟机堆栈,但它不是服务于Java方法(字节码),而是服务于本地非Java方法。StackOverFlowError和OOM也被抛出。

  5.方法区

  该方法由所有线程共享。用于存储类信息、常量、静态变量和其他已经被虚拟机加载的数据,也称为非堆。该方法也称为“永久生成”。这方面很少进行GC,但不代表不会回收。本区域回收目标主要针对恒池和卸载类型的回收。当内存请求大于实际可用内存时,将抛出OOM。

  java相关文章推荐:java简介以上是JVM中运行时数据区的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: