第十章 栈和局部变量操作

第十一章 类型转换

第十二章 整数运算

第十三章 逻辑运算

第十四章 浮点运算

第十五章 对象和数组

第十六章 控制流

第十七章 异常

以上一些是操作码相关的内容,

第十八章 finally子句

微型子例程

字节码中的finally子句表现的很像微型子例程。Java方法与微型子例程使用不同的指令集。跳转到微型子例程的指令是jsr或者jsr_w,将返回地址压入栈。执行完毕后调用ret指令。ret指令并不会从栈中弹出返回地址,而是在子例程开始的时候将返回地址从栈顶取出存储在局部变量,ret指令从局部变量中取出。这是因为finally子句本身会抛出异常或者含有return、break、continue等语句。finally确保会执行到,即使try或者catch中有return等语句。

第十九章 方法的调用与返回

实例方法和类方法区别:

a) 实例方法调用之前需要一个示例,类方法不需要
b) 实例方法使用动态绑定,类方法使用静态绑定

调用的指令是invokevirtual和invokestatic。根据引用类型调用使用invokespecial,包括实例初始化、私有方法和super调用方法。在调用的引用类型是接口时使用invokeinterface。invokeinterface必须搜寻方法表而不是使用偏移量,因此速度比invokevirtual慢。

第二十章 指令invokespecial

第二十一章 线程同步

监视器

Java中使用的同步机制是监视器,监视器支持两种线程:互斥和协作。通过对象锁实现互斥,允许多个线程在同一个共享数据上独立而互不干扰地工作。协作通过Object类的wait和notify方法,允许多个线程为同一个目标而共同工作。监视区域是最小的不可分割的代码块。在同一个监视器中,监视区域只会同时被一个线程执行。Java所使用的监视器被称为wait and notify监视器。Java虚拟机在执行wait命令时可以指定一个暂停时间。唤醒命令有两种:notify和notifyAll。notify命令随意从等待区中选择一个线程并标记为可能苏醒,notifyAll命令将等待区中的所有线程标记为可能苏醒。

类锁用对象锁实现

锁住一个类实际上锁住的是类的Class对象。对于对象来说,Java虚拟机维护一个计数器,对象被加锁时计数加1。Java中有两种监视区域:同步语句和同步方法。每一个监视区域都和一个对象引用关联。同步语句块使用monitorenter和monitorexit两个操作码。对方法加锁比同步代码块更加高效。

深入Java虚拟机读书笔记[10:20]相关推荐

  1. java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略

    java虚拟机读书笔记 第三章 垃圾收集器和内存分配策略 GC需要完成的三件事情:哪些内存需要回收.什么时候回收.如何回收 垃圾回收器在对堆进行回收前,首先要确定那些对象存活,哪些对象已经死去,判断的 ...

  2. 深入Java虚拟机读书笔记第五章Java虚拟机

    Java虚拟机 Java虚拟机之所以被称之为是虚拟的,就是因为它仅仅是由一个规范来定义的抽象计算机.因此,要运行某个Java程序,首先需要一个符合该规范的具体实现. Java虚拟机的生命周期 一个运行 ...

  3. 深入理解java虚拟机-读书笔记

    内存动态分配与内存回收技术已经相当成熟,看起来进入了自动化的时代,为什么还要去了解垃圾收集和内存分配? 当需要排查各种内存溢出.内存泄漏问题时 当垃圾收集成为系统达到更高并发量的瓶颈时 我们就必须对内 ...

  4. 深入理解java虚拟机---读书笔记

    第一章 走近java 1. java 技术体系: java 程序设计语言 各种硬件平台上的java虚拟机 class 文件格式 java API 类库 来自商业机构或者开源机构的第三方java类库 j ...

  5. 深入理解Java虚拟机——读书笔记01

    基础知识 JDK:Java程序设计语言.Java虚拟机.Java API类库 JRE:Java API类库中的Java SE API子集和Java虚拟机 Java技术基础支撑点:JAR文件格式.JDB ...

  6. Java虚拟机不能满足_深入理解Java虚拟机--读书笔记1/3

    <深入理解Java虚拟机-JVM高级特性与最佳实践> Chap 2 Java内存区域与内存溢出异常 1.Java运行时数据区域 A.程序计数器:当前线程所执行字节码的行号指示器,线程私有( ...

  7. 深入理解Java虚拟机读书笔记十二

    第 7 章虚拟机类加载机制 7. 1.概述 虚拟机把描述类的'数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. ...

  8. 深入理解Java虚拟机读书笔记七

    3.5.内存分配与回收策略 3.5.1.对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配.当 Eden区没有高足够的空间进行分配 时,虚拟机将发起一次Minor GC. 虚拟机提供- ...

  9. 深入理解java虚拟机-读书笔记2-垃圾收集器和内存分配策略

    垃圾回收重点区域:堆和方法区部分区域. 引用计数算法: 1,引用计数算法: 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当引用失效时,计数器值就减1:任何时刻计数器都为0的对象 ...

最新文章

  1. 软件项目开发无成熟框架套路之成本代价
  2. c#小软件(SaveClassic)开发手记--(3)基础类(MP3播放类MP3Player)
  3. 中序遍历的非递归算法
  4. OpenCV极变换polar transforms的实例(附完整代码)
  5. Bootstrap-table 部分浏览器显示不出来
  6. 负载(Load)分析及问题排查
  7. openssh8.6升级修复(CVE-2020-15778)(CVE-2018-15919)(CVE-2017-15906)等漏洞
  8. 初创公司 经营_LibreCorps指导人道主义初创公司如何运行开源方式
  9. Intel Core Enhanced Core架构/微架构/流水线 (3) - 流水线概述
  10. MySQL深度剖析之undo log redo log binlog专题(2021)
  11. 江苏机器人竞赛南航_挑战不止 热血不息!1000余名青少年决战江苏省机器人普及大赛!...
  12. python 路径拼接字符串_字符串游戏之拼接字符串
  13. ubuntu常见问题有效解决办法
  14. 计算机及相关设备制造业2020,在现实生活中,接近完全垄断市场类型的行业包括()。A.计算机及相关设备制造业B.稀有金属...
  15. HBuilderX报错:ESC[0;31m--> LibSass的二进制文件.....]
  16. 快压、360压缩、WinRAR关于打开快压通过超高压缩比压缩后的文件不兼容的问题
  17. C++ Primer 中文版(第 5 版)练习解答合集
  18. 2022届美团和腾讯校招薪资出来了,被倒挂了。。。
  19. 计算机编程需要学哪些基础知识,学编程需要掌握哪些基础知识
  20. pythonsze_python学习笔记二 数据类型(基础篇)

热门文章

  1. smarty的简单分页
  2. 面向对象模型的四种核心技术
  3. shell基础语法以及监控进程不存在重启
  4. 深入理解PHP原理之变量作用域
  5. IANA定义的常见服务的端口号列表
  6. Linux kernel futex.c的bug导致JVM不可用
  7. Simple Dynamic Strings(SDS)源码解析和使用说明二
  8. CUDA Samples: Dot Product
  9. 【Qt】Qt再学习(一):Application Example
  10. 【驱动】在内核源码中添加驱动程序