码迷,mamicode.com
首页 > 编程语言 > 详细

Java虚拟机各内存区域的位置及功能的介绍

时间:2016-03-10 16:07:15      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

Java虚拟机运行时数据区:

技术分享

相关区域介绍:

程序计数器:

  功能:当前线程所执行字节码的行号指示器。若是Java方法记录指令地址,若为Native方法,则不记录

  隔离性:线程隔离

  Error:无

Java虚拟机栈

  功能:描述Java方法执行的内存模型:每个方法执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

  隔离性:线程隔离

  Error:线程请求的栈深度大于虚拟机所允许的深度时,抛出 StackOverflowError 异常;

     动态扩展时无法申请到足够的内存,抛出 OutOfMemoryError 异常。

  局部变量表:局部变量表所需的内存空间在编译期间分配,包含各种基本数据类型,及对象引用。

本地方法栈:

  功能:为虚拟机使用到的Native方法服务。(虚拟机栈为Java方法(也就是字节码)服务)

  隔离性:线程隔离

  Error: StackOverflowError  和 OutOfMemoryError

Java堆:

  功能:存放对象实例

  隔离性:线程共享

  Error:OutOfMemoryError

  细分:内存回收的角度:新生代、老生代

     内存分配的角度:Java堆中可能划分出多个线程私有的分配缓冲区。

  虚拟机限制:不需要连续内存空间,可以固定大小也可扩展

方法区:

  功能:存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码等。

  隔离性:线程共享

  Error:OutOfMemoryError

     虚拟机限制:不需要连续内存空间,可以固定大小也可扩展;此区域内存的回收主要针对常量池的回收和对类型的卸载。

  运行时常量池:方法区的一部分

    功能:用于存放编译期生成的各种字面量和符号引用,及翻译出来的直接引用

     特性:动态性,运行期间也可以将新的常量放入池中。

     Error:OutOfMemoryError

Java虚拟机各内存区域的位置及功能的介绍

标签:

原文地址:http://www.cnblogs.com/tf-Y/p/5262249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!