索引:基础篇
索引:基础篇索引概述 索引的主要内容主要涉及四个问题: 什么是索引?索引在数据库中究竟起什么作用? 为什么要使用索引?不使用索引会存在什么问题吗? 索引是如何实现的?或者说是采用哪些数据结构实现的? MySQL 索引有哪些常见的类型?各类索引适用的场景以及存在的问题是什么? 索引相关的面试内容基本离不开这四个问题,也就是说这四个问题基本涵盖了索引的所有核心内容;在实际工作的时候就需要 ...
Read more
垃圾回收-垃圾回收器
垃圾回收器概述:::warning ① 垃圾回收器是虚拟机中具体执行垃圾回收的部分,也是垃圾回收算法的具体实现 ② 不过后续许多的垃圾回收器并不是严格使用此前提到的算法,有非常多不同的改进 ③ Java 社区中的许多公司都开发了自己的虚拟机,诸如 IBM、Oracle、RedHat 等等 ④ 不同的公司研发的不同的虚拟机,以及虚拟机的逐步改进,可能会让初看的同学感到混乱 ⑤ 所以我打算先把垃圾回收 ...
Read more
垃圾回收-垃圾回收算法
垃圾回收算法概述 两类不同的垃圾回收算法 依据:[依据判断对象消亡的方式划分的两类垃圾回收算法]{.red} 分类: 引用计数式垃圾收集(Referrence Counting) 追踪式垃圾收集(Tracing GC) 细节:Java 虚拟机中采用的是追踪式垃圾收集,所有以下所有算法都是基于追踪式垃圾收集 :::info ① 希望了解更多关于垃圾回收算法的相关内容可以阅读《垃圾回收算法手 ...
Read more
垃圾回收-概述
概述垃圾回收机制简介什么是垃圾回收机制? 1. 先来聊聊有关垃圾回收机制的历史吧 历史①:垃圾回收机制也称为自动内存管理,旨在由虚拟机自动管理内存空间而不需要开发者的介入 历史②:Lisp 语言是世界第一门采用动态内存分配和垃圾收集技术的语言 历史③:手动垃圾回收与自动垃圾回收 手动垃圾回收 代表语言:C/C++ 定义:[开发者必须手动调用方法去回收内存中的垃圾]{.blue} 优点:[开发者 ...
Read more
执行引擎-后端编译器
后端编译器即时编译器 什么是即时编译器? 前提: 虚拟机规范中并没有强制要求必须实现即时编译器,虚拟机可以采用纯解释执行 但是 [即时编译器性能的好坏、对于代码优化质量的高低]{.blue} 却是衡量虚拟机是否优秀的关键标准 名称:即时编译器(Just In Time 编译器) 定义:[负责在 进程运行期间 将 热点探测 决定的字节码指令 编译并且优化 成本地机器指令]{.red} ...
Read more
栈空间-虚拟机栈
虚拟机栈概述 虚拟机栈基本概念 定义:虚拟机栈依然是一块内存区域 作用:[临时存储所有 已经被调用 的方法拥有的数据]{.red} 组成:[栈帧是虚拟机栈中最小的存储单位]{.red} 每个栈帧对应保存每个被调用的方法,没有被调用的方法是不会产生相应的栈帧进行保存的 每个方法执行结束后,栈帧就会出栈(销毁) 特点: [虚拟机栈是线程私有空间:每个线程都会占用虚拟机栈的中的 固定空间 ...
Read more
堆空间-TLAB
TLAB:::primary 参考博客: JVM - TLAB 在TLAB中创建的对象,如何被其他线程共享? 浅析java中的TLAB ::: 什么是 TLAB? 名称: 全称:TLAB(Thread Local Allocation Buffer) 译名:线程本地缓存 定义:[堆中的 伊甸园区 分配给线程的一块较小的“私有”空间]{.red} 在伊甸园区中划分 TLAB 采用的也是 ...
Read more
堆空间-逃逸分析
逃逸分析:::warning 前提:逃逸分析目前是 Java 虚拟机中比较前沿的技术,并且还很不成熟,需要时间优化 参考博客:JVM对象逃逸 ::: 什么是逃逸分析? 定义:编译器根据字节码信息分析对象是否发生逃逸的 [分析技术]{.red} :::info ① 逃逸分析只是 [代码分析技术]{.red} 而不是 [代码优化技术]{.red} ② 逃逸分析是后续代码优化技术的前提 ...
Read more
堆空间-内存分配
内存分配:::info 前提:这里对象的分配策略是建立在堆空间中的,不考虑逃逸分析这种例外情况 核心:解决对象如何在堆空间分配的问题 ::: 分区概述 伊甸园区: [几乎所有对象都是在伊甸园区中被创建的,并且在伊甸园区中被销毁]{.red} [伊甸园区无法存放对象时将会触发 Minor GC]{.red} 幸存者0区/幸存者1区: 开始:[每次仅使用一个分区存放对象,另外一个分区暂时为空] ...
Read more
堆空间-对象创建
对象创建对象的组成部分 对象头(Header) 实例数据(Instance Data) 对齐填充(Padding) 对象头 对象头图示 对象头详解 [Mark Word]{.red}: 定义:采用 32位/64位 的 Bitmap 数据结构存储对象的运行时相关信息 :::info 32位虚拟机的 Bitmap 数据结构就是32位的,64位的虚拟机的 Bitmap 就是 ...
Read more