jvm原理及性能调优系列(自动内存管理机制)

JAVA内存区域和内存溢出异常

1、JAVA运行时数据区如下图

  《jvm原理及性能调优系列(自动内存管理机制)》

  程序计数器:当前线程正在执行的代码的行号指示器。是线程私有的。它是JAVA虚拟机唯一没有指定OutOfMerroryError异常的区域。

  虚拟机栈:是线程私有的。描述的是Java方法执行时的内存模型。每个方法被创建时,会创建一个栈帧,用于存储局部变量表、操作表、方法出口等信息。

  本地方法栈:其发挥的作用与虚拟机栈类似。不同的是虚拟机栈为虚拟机方法服务,本地栈位为虚拟机使用到的Native方法服务。

  Java堆:被所有线程共享的一块区域。对象的实例及实例都在堆上分配。

  方法区:是被所有线程共享的一块区域。用于存储已被虚拟机加载的信息,常量、静态变量、即时编译器编译后的代码数据等

  虚拟机栈和本地方法异常溢出包含两种:StackOverflowError(线程请求的栈深度大于虚拟机所允许的栈深度)和OutofMemoryError(虚拟机在扩展栈时无法申请到所需空间)

  其他类型大部分为OutofMemoryError

  

  

 

    原文作者:JVM
    原文地址: http://www.cnblogs.com/guohui-y/p/5206737.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞