深入Java虚拟机读书笔记[10:20]

简介:

第十章 栈和局部变量操作

第十一章 类型转换

第十二章 整数运算

第十三章 逻辑运算

第十四章 浮点运算

第十五章 对象和数组

第十六章 控制流

第十七章 异常

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

第十八章 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两个操作码。对方法加锁比同步代码块更加高效。

目录
相关文章
|
2月前
|
存储 Java 数据安全/隐私保护
【JVM】Java虚拟机栈(Java Virtual Machine Stacks)
【JVM】Java虚拟机栈(Java Virtual Machine Stacks)
38 0
|
5月前
|
监控 安全 Java
Java基础知识:解释一下Java虚拟机(JVM)是什么。
Java基础知识:解释一下Java虚拟机(JVM)是什么。
40 3
|
10天前
|
存储 Java
深入理解Java虚拟机:JVM内存模型
【4月更文挑战第30天】本文将详细解析Java虚拟机(JVM)的内存模型,包括堆、栈、方法区等部分,并探讨它们在Java程序运行过程中的作用。通过对JVM内存模型的深入理解,可以帮助我们更好地编写高效的Java代码,避免内存溢出等问题。
|
2月前
|
缓存 算法 安全
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(二)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
21 0
|
2月前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
90 0
|
4月前
|
Linux Windows
FinalShell连接Linux虚拟机报错java.net.ConnectException: Connection timed out: connect(亲测有效)
FinalShell连接Linux虚拟机报错java.net.ConnectException: Connection timed out: connect(亲测有效)
195 0
|
2月前
|
存储 Java 开发者
深入理解Java虚拟机(JVM)内存管理
【2月更文挑战第11天】 在本篇文章中,我们将深入探讨Java虚拟机(JVM)的内存管理机制,一项对于优化Java应用性能至关重要的技术领域。不同于常规的技术文章摘要,我们不仅概述了JVM内存管理的基本概念,还将引导读者通过实际案例理解其在现实世界应用中的重要性。从堆(Heap)和栈(Stack)的区别开始,到垃圾收集(Garbage Collection)机制的工作原理,本文旨在为Java开发者提供一个清晰、系统的JVM内存管理知识框架,帮助他们在开发过程中做出更加明智的决策。
|
3月前
|
存储 算法 Java
Java虚拟机内存管理机制
【2月更文挑战第7天】本文主要介绍了Java虚拟机内存管理机制的基本原理和实现方式。Java虚拟机的内存管理机制是Java程序运行的重要组成部分,对程序性能和稳定性有着直接的影响。文章首先从Java虚拟机内存模型入手,介绍了Java虚拟机中堆内存、方法区、栈、PC寄存器等内存区域的功能特点和使用方式;然后详细阐述了Java虚拟机内存管理机制的垃圾回收算法和回收器的分类、优化和实现过程;最后介绍了一些常见的内存问题和优化技巧,以及如何通过代码调优和合理使用内存配置参数来提高程序的性能和稳定性。
|
4月前
|
安全 前端开发 Java
【JVM】<Java虚拟机>JVM架构&各种**虚拟机
【1月更文挑战第26天】【JVM】<Java虚拟机>JVM架构&各种**虚拟机
|
4月前
|
自然语言处理 Oracle Java
【JVM】<Java虚拟机>JVM和JAVA体系结构
【1月更文挑战第26天】【JVM】<Java虚拟机>JVM和JAVA体系结构