深入理解 Java 虚拟机
Java 代码的执行 源码编译机制 javac 编译源码为 class 文件的步骤 Sun JDK 中采用 javac 将 Java 源码编译为 class 文件,这个过程包含三个步骤: 分析和输入到符号表(Parse and Enter) Parse 过程所做的为词法和语法分析。词法分析(com.sun.tools.javac.parser.Sca...
Java 代码的执行 源码编译机制 javac 编译源码为 class 文件的步骤 Sun JDK 中采用 javac 将 Java 源码编译为 class 文件,这个过程包含三个步骤: 分析和输入到符号表(Parse and Enter) Parse 过程所做的为词法和语法分析。词法分析(com.sun.tools.javac.parser.Sca...
ch13 线程安全与锁优化 1 线程安全 可操作的定义: 当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协作操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。 要求线程安全的代码: 代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程下的调用问题,...
flowchart TD A[ch12 Java 内存模型与线程] A --> A1[概述] A --> A2[硬件的效率与一致性] A --> A3[Java 内存模型] A --> A4[Java 与线程] A --> A5[Java 与协程] A --> A6[ch12 本章小结] 1 概述 Amda...
虚拟机性能监控与故障处理工具 给一个系统定位问题的时候, 知识、 经验是关键基础, 数据是依据, 工具是运用知识处理数据的手段。这里说的数据包括但不限于异常堆栈、 虚拟机运行日志、 垃圾收集器日志、 线程快照(threaddump/javacore文件) 、 堆转储快照(heapdump/hprof文件) 等。恰当地使用虚拟机故障处理、分析的工具可以提升我们分析数据、 定位并解决问题的效率...
Owner: better 一个类型从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期将经历 1 加载 Loading 2 验证 Verification 3 准备 Preparation 4 解析 Resolution 5 初始化 Initialization 6 使用 Using 7 卸载 Unloading 七个阶段,其中验证、准备、解析三个部分统称为连接 Linking ...
虚拟机字节码执行引擎 Owner: better 概述 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。 之前还有Java是解释型还是编译型一看就是不...
Owner: better This chapter describes the class file format of the Java Virtual Machine. https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html 字节码文件分析 javap Disassembles one or more clas...
Owner: better 思维脉络 这块讲什么 垃圾收集要完成的事情? 哪些内存需要回收? 什么时候回收? 如何回收? 怎么判断垃圾? 垃圾收集的算法 垃圾收集算法的具体实现——垃圾收集器 Q: 为什么还要去了解垃圾收集和内存分配? Ans: 当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系...
ch2 Java 内存区域与内存溢出异常 这块到底讲了什么——两个事 一个是(运行时数据区域)JVM 它使用的这块物理内存的数据区域是怎么划分的,每块区域是做什么的,放了什么,就是讲的 JVM 内存模型的情况。 二个是(HotSpot虚拟机对象探秘)这块就是 JVM 在堆中对象的分配、布局以及访问。 概念上介绍 Java 虚拟机内存的各个区域,讲解这些区域的作用、服务对象以及其中可能...
一 反编译工具 1.1 常见反编译工具 常见的反编译工具:jadx(推荐)、jeb、GDA 反编译工具依赖于java环境,所以我们按照jdk 1.2 JDK环境安装 官方地址:(需要注册-最新java 21) https://www.oracle.com/java/technologies/downloads/ 下载地址 链接: https://pan.baidu.c...