美文网首页Java我爱编程
Java虚拟机规范阅读笔记—第2章

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

作者: 程序熊大 | 来源:发表于2018-05-28 21:16 被阅读99次

运行时数据区包括: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

相关文章

  • JVM系列-01-JVM内存模型

    [TOC] 声明 本篇文章是本人阅读《深入理解JVM》和《java虚拟机规范》时的笔记。JVM是HotSpot,j...

  • Java学习资料汇总全

    《JAVA解惑[JAVA PUZZLERS]》 《Java虚拟机规范(Java_SE_7)》 Java语言规范:基...

  • 用Java实现JVM第一章《命令行工具》

    背景描述为了更好的学习jvm阅读过《Java虚拟机规范》、《自己动手写Java虚拟机》,尤其是《自动动手写java...

  • 用Java实现JVM第一章《命令行工具》

    背景描述为了更好的学习jvm阅读过《Java虚拟机规范》、《自己动手写Java虚拟机》,尤其是《自动动手写java...

  • JVM笔记01-类加载

    0. 前言 JVM笔记系列,以JDK1.7为基准,主要以《深入理解Java虚拟机》(第二版)和《Java虚拟机规范...

  • JVM笔记03-JVM垃圾回收

    0. 前言 JVM笔记系列,以JDK1.7为基准,主要以《深入理解Java虚拟机》(第二版)和《Java虚拟机规范...

  • JVM笔记02-JVM内存区域结构

    0. 前言 JVM笔记系列,以JDK1.7为基准,主要以《深入理解Java虚拟机》(第二版)和《Java虚拟机规范...

  • 《深入理解Java虚拟机》读书笔记

    作为一名Java开发人员,不能局限于Java语言规范,更需要对Java虚拟机规范有所了解。Java虚拟机规范有多种...

  • JVM系列-02-GC-扫盲

    [TOC] 声明 本篇文章是本人阅读《深入理解JVM》和《java虚拟机规范》时的笔记。记录的都是一些概念性的东西...

  • JVM系列-03-内存分配和回收策略

    [TOC] 声明 本篇文章是本人阅读《深入理解JVM》和《java虚拟机规范》时的笔记。记录的都是一些概念性的东西...

网友评论

    本文标题:Java虚拟机规范阅读笔记—第2章

    本文链接:https://www.haomeiwen.com/subject/btsnjftx.html