第4章 运行时数据区run-time data area

实现运行时数据区
(run-time data area)

在运行Java程序时,Java虚拟机需要使用内存来存放各式各样的数据。Java虚拟机规范把这些内存区域叫作运行时数据区。
运行时数据区可以分为两类:

a.线程私有的。

创建线程时才创建,线程退出时销毁。用于辅助执行Java字节码。
每个线程都有自己的

  • pc寄存器(Program Counter)
    如果当前方法是Java方法,则pc寄存器中存放当前正在执行的Java虚拟机指令的地址,否则,当前方法是本地方法,pc寄存器中的值没有明确定义。

  • Java虚拟机栈(JVM Stack)。
    栈帧(Stack Frame,后面简称帧)构成,帧中保存方法执行的状态,包括

    • 局部变量表(Local Variable)
      大小由编译器预先计算好的, 存储在class文件method_info结构的Code属性中
      按索引访问的,所以很自然,可以把它想象成一个数组。根据Java虚拟机规范,这个数组的每个元素至少可以容纳一个int或引用值,两个连续的元素可以容纳一个long或double值。
    • 操作数栈(Operand Stack)
      大小由编译器预先计算好的, 存储在class文件method_info结构的Code属性中
      在任一时刻,某一线程肯定是在执行某个方法。这个方法叫作该线程的当前方法;执行该方法的帧叫作线程的当前帧;声明该方法的类叫作当前类
b.多线程共享的,

Java虚拟机启动时创建好,在Java虚拟机退出时销毁
主要存放两类数据:


  • 放在方法区(Method Area)中,包括字段和方法信息、方法的字节码、运行时常量池,等等。从逻辑上来讲,方法区其实也是堆的一部分。
  • 对象
    放在堆(Heap)中,堆由垃圾收集器定期清理,程序员不需要关心对象空间的释放。
a|b

Java虚拟机规范对于运行时数据区的规定是相当宽松的。
堆(heap)
堆可以是连续空间,也可以不连续。
大小可以固定,也可以在运行时按需扩展 [-Xms-Xmx两个非标准选项,用来调整堆的初始大小和最大大小] 。
虚拟机实现者可以使用任何垃圾回收算法管理堆,甚至完全不进行垃圾收集也是可以的。
Java虚拟机栈:
可以是连续的空间,也可以不连续;
可以是固定大小,也可以在运行时动态扩展 [-Xss选项设置大小] 。
如果Java虚拟机栈有大小限制,且执行线程所需的栈空间超出了这个限制,会导致StackOverflowError异常抛出。
如果Java虚拟机栈可以动态扩展,但是内存已经耗尽,会导致OutOfMemoryError异常抛出。

4.2 Java虚拟机数据类型

Java虚拟机可以操作两类数据:
基本类型(primitive type)
基本类型的变量存放的就是数据本身,基本类型可以进一步分为:

  • 布尔类型(boolean type)
  • 数字类型(numeric type): 整数类型(integral type), 浮点数类型(floating-point type)

引用类型(reference type)
引用类型的变量存放的是对象引用,真正的对象数据是在堆里分配的。
引用类型可以进一步分为3种:

  • 类:指向类实例
  • 接口:指向实现了该接口的类或数组实例
  • 数组:指向数组实例
    还有一个特殊的值——null,表示该引用不指向任何对象。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 2018 年8月17日 星期六 天气阴 今天我还是早早起床。做好饭。给小儿子喝完奶我们就...
    高俊杰妈妈阅读 139评论 0 0
  • 从前有一个男人,他为我戒烟,戒酒,戒赌博。后来呀,他开始敷衍我,欺骗我,不回我的消息。其实他还是他,只是心态变了。...
    笑颜_2cc6阅读 121评论 0 0
  • 因为一位特殊朋友的推荐,认识了简书。认识简书的日子里断断续续的看着简书中很多的简友走上了创作之路,很是羡慕。因为从...
    寻梦桃花源阅读 108评论 0 0