Java虚拟机规范阅读笔记—第2章

运行时数据区包括:PC、栈、堆、方法区、栈帧(Frames)、

栈:

跟栈相关的异常有:

  1. StackOverflowError:如果栈的大小是固定的,那么如果某个线程尝试获取超过这个规格的栈的时候会抛这个异常;
  2. OutOfMemoryError:如果栈的大小是可扩展的,那么如果在扩展的时候发现系统以及没有可用内存,会抛出这个异常;

栈帧

在发生一个方法调用的时候会创建一个栈帧,在方法执行结束(无论是正常结束还是抛出异常)的时候栈帧会被销毁。栈帧在JVM的栈上分配,栈属于某个线程。每个栈帧都有自己的本地变量数组、运算元栈、指向运行时常量池的引用和指向当前方法所属类的引用。

注意:

  1. 运算元栈的作用类似于CPU中的寄存器。参考:https://stackoverflow.com/questions/24427056/what-is-an-operand-stack
  2. 运算元栈中的数据带有类型
  3. 本地变量用于存放方法参数和本地变量,对于类的方法调用:方法参数从本地变量数组的0开始;对于实例对象的方法调用:位置0用于存放被调用方法的实例,即this,其他方法参数和本地变量从1开始存放。

特殊方法

  1. init和cinit方法:https://stackoverflow.com/questions/8517121/java-what-is-the-difference-between-init-and-clinit

签名多态方法(Signature Polymorphic Methods)

  1. MethodHandle(java 7引入),动态确定目标方法,把Method Handle与C/C++中的Function Pointer,或者C#里面的Delegate类比一下
  2. VarHandle(java 9引入)
    1. 目标是:https://stackoverflow.com/questions/43558270/correct-way-to-use-varhandle-in-java-9

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏积累沉淀

Java设计模式(二十一)----访问者模式

访问者模式 一、概述 1、定义 2、分派的概念 3、分派的类型 4、双重分派 二、结...

222100
来自专栏光变

3.1 ASM-方法-结构

ASM-方法-结构 本章将会介绍如果使用ASM core API生成或者转换Java编译后的method。 本将开始会展示编译后的method,然后使用很多说...

17020
来自专栏码匠的流水账

聊聊storm trident的state

storm-2.0.0/storm-client/src/jvm/org/apache/storm/trident/state/StateType.java

26140
来自专栏小李刀刀的专栏

Unicode编解码函数

在用XMLHTTP进行远程数据传输的时候,如果涉及到不同编码,比如从oblog向我的博客发送一个trackback ping,数据中包含的中文字符就会出现乱码。...

36050
来自专栏大内老A

关于CLR内存管理一些深层次的讨论[下篇]

《上篇》中我们主要讨论的是程序集(Assembly)和应用程序域(AppDomain)的话题,着重介绍了两个不同的程序集加载方式——独占方式和共享方式(中立域方...

22290
来自专栏GreenLeaves

C# Encoding

之前做公司项目的时候,对于C#编码这块总是一知半解,所以打算通过这篇笔记对C#编码(Encoding)进行彻底的扫盲,关于编码和字符集的基础知识,请参考字符集和...

29270
来自专栏码匠的流水账

聊聊GenericObjectPool的泄露检测

本文主要聊聊GenericObjectPool的abandon参数。主要用来做连接池的泄露检测用。

19020
来自专栏Python爬虫与算法进阶

学点算法之栈的学习与应用

在学习栈前,脑海中对这个词只有一个印象:客栈 栈是什么 栈(有时称为“后进先出栈”)是一个项的有序集合,其中添加移除新项总发生在同一端。 这段话初学者是懵逼的...

32730
来自专栏软件开发 -- 分享 互助 成长

为什么无返回值的链表的插入操作头结点一定要用指向指针的指针

前言: 为什么链表的插入操作头结点一定要用指向指针的指针?之前自己对这个问题总是一知半解,今天终于花了点时间彻底搞懂了。 总的来说这样做的目的是为了应对“空链表...

25370
来自专栏决胜机器学习

PHP数据结构(三)——运用栈实现括号匹配

PHP数据结构(三)——运用栈实现括号匹配 (原创内容,转载请注明来源,谢谢) 栈在数据结构上是一种特殊的线性表,其限制是仅允许在表的一端进行插入和删除运算,...

44560

扫码关注云+社区

领取腾讯云代金券