摘要: MySQL目前主要有以下几种索引类型: 普通索引 普通索引是 MySQL 中最基本的索引类型,它没有任何限制,唯一任务就是加快系统对数据的访问速度。允许重复值和空值。 唯一索引 唯一索引列的值必须唯一,允许有空值。 主键索引 主键索引是一种特殊的唯一索引,不允许值重复或者值为空。 组合索引 指多个字 阅读全文
posted @ 2020-12-17 23:49 天宇轩-王 阅读(107) 评论(0) 推荐(0) 编辑
摘要: btree索引和hash索引的区别 Hash 索引 优点:Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。 缺点: Hash 索引仅仅 阅读全文
posted @ 2020-12-17 23:28 天宇轩-王 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 说说逃逸分析和栈上分配 逃逸分析: 它是可以有效减少java程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。它能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。 当一个对象在方法中被定义后,对象只在方法内部使用,则认为没有发生逃逸。 当一个对象在方法中被定义后,它被 阅读全文
posted @ 2020-12-17 13:39 天宇轩-王 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 为什么会有TLAB(Thread Local Allocation Buffer)? • 堆区是线程共享区域,任何线程都可以访问到堆区中的共享数据; • 由于对象实例的创建在JVM中十分频繁,一次在并发环境下从堆区中划分内存空间是线程不安全的; • 为避免多个线程操作同一地址,需要使用加锁等机制,进 阅读全文
posted @ 2020-12-17 10:26 天宇轩-王 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 你了解对象分配规则吗 为新对象分配内存是一个非常严谨和复杂的任务,JVM的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法与内存回收算法密切相关,所以还需要考虑GC执行完内存回收是否会在内存空间中产生内存碎片。 对象优先分配在Eden区,如果Eden区没有足够的空间时,虚拟机 阅读全文
posted @ 2020-12-17 10:09 天宇轩-王 阅读(162) 评论(0) 推荐(0) 编辑
摘要: Java 对象的创建过程 1.1 类加载 虚拟机遇到new指令,首先检查这个指令的参数能否在元空间的常量池中定位到一个类的符号引用,并且看这个符号引用的类是否已经被加载,解析和初始化。如果没有,那么在双亲委派模式下,查找对应的class文件。 1.2 分配内存 对象所需内存大小根据加载的类来确定,为 阅读全文
posted @ 2020-12-17 00:59 天宇轩-王 阅读(302) 评论(0) 推荐(0) 编辑
摘要: Minor GC、Major GC、Full GC Minor GC 当年轻代空间不足时,就会触发Minor GC,这里的年轻代满指的是Eden满,Survivor满不会触发GC。(每次Minor GC 会清理年轻代的内存) 因为Java对象大多都具备朝生熄灭的特性,所以Minor GC非常频繁,一 阅读全文
posted @ 2020-12-17 00:18 天宇轩-王 阅读(814) 评论(3) 推荐(0) 编辑