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

jvm内存分区及各区线程问题

时间:2017-10-03 10:42:49      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:异常处理   idt   ati   引用   虚拟机   依赖   height   数据结构   frame   

一.java内存模型图

技术分享

二.直观分类图

  技术分享

 

三.各区简单描述

   1.堆(heap):主要存放对象的实例也包括数组,是垃圾管理的主要作用区,是线程共享的

          2.栈(stack):①虚拟机栈:描述的是 Java 方法执行的内存模型,每个方法在执行的同时会创建一个 Stack Frame (方法运行时的基础数据结构)用于存储局部变量表、操 

                                                        作数栈、动态连接、方法出口等信息;是线程隔离的

          ②本地方法栈:本地方法栈和虚拟机栈非常相似,只不过本地方法栈是为Java使用到的Native方法服务的

          3.方法区(Method Area):被虚拟机加载的类信息、静态(static)变量,常量(final),即时编译器编译后的代码等数据。运行常量池是方法区的一部分,class文件除了有类

                                                    的版本、字段、接口、方法等描述信息之外,还有一项信息常量池保存编译期生成的字面量和符号引用。 线程之间共享的

   4.程序计数器(PC):是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取 下一条需要执行的字节

                                               码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。(是线程隔离的)

 

    综合有:堆和方法区是线程共享的,栈和程序计数器是线程隔离的

 

jvm内存分区及各区线程问题

标签:异常处理   idt   ati   引用   虚拟机   依赖   height   数据结构   frame   

原文地址:http://www.cnblogs.com/goxcheer/p/7623257.html

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