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

来源:互联网 发布:阿里云redis 怎么使用 编辑:程序博客网 时间:2024/05/16 17:01

1.运行时数据区域

1)方法区

2)虚拟机栈

   java 虚拟机栈也是线程私有的,它的生命周期和线程的相同。

3)本地方法栈

4) 堆

5)程序计数器

   程序计数器是一块较小的内存空间,它的作用可以看做是当前线程的行号指示器。在虚拟机概念模型当中,字节码解释器工作时主要是通过改变代码的这个计数器值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常跳转、线程恢复等都需要依赖这个计数器。

  在任何一个确定的时刻,一个处理器只能执行一条线程中的指令。

  每条线程都需要有一个独立的程序计数器,各条线程之间的程序计数器互不影响,独立存储。

  java 方法---虚拟机字节码指令的地址

  native 方法 ---这个计数器值为空(Undefined)

  此区域中为 唯一一个虚拟机规范中,没有任何OutOfMemeryError 情况的区域。