求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

JVM 系列 垃圾收集算法

开启JVM探索新篇章

算法 新生代收集算法 使用 标记-复制收集 算法来回收新生代。将内存分为一块较大的eden空间和两块较小的 survivor 空间,每次使用eden和其中一个survivor空间。当回收时,将eden和survivor中还存活着的对象一次性的复制到另外一块 survivor 空间上,最后清理掉 eden 和刚才用过的 survivor 空间。 Hotspot 虚拟机默认的 eden 和...

JVM 系列 垃圾收集器

开启JVM探索新篇章

垃圾收集器的不断更新,只为消除或减少工作线程因内存回收而导致的停顿。 原理 GC调优目标 大多数情况下对 Java 程序进行 GC 调优, 主要关注两个目标:响应速度、吞吐量 响应速度(Responsiveness) 响应速度指程序或系统对一个请求的响应有多迅速。比如,用户订单查询响应时间,对响应速度要求很高的系统,较大的停顿时间是不可接受的。调优的重点是...

JVM 系列 垃圾对象判断依据

开启JVM探索新篇章

引用计数法 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1. 存在的问题 很难解决对象之间相互循环引用的问题。 可达性分析算法 通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。 可作为 GC Root...

JVM 系列 类加载机制

开启JVM探索新篇章

虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 推荐:IBM 推荐:IBM 要点 动态加载 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。Java里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。 类加载时机 ...

JVM 系列 内存管理之内存区域

开启JVM探索新篇章

程序计数器 特点:线程私有 记录当前线程所执行的字节码指令的地址。字节码解释器的工作就是通过改变这个计数器来选取下一条需要执行的字节码指令。 注意: 如果线程正在执行的是一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 native 方法,这个计数器值则为空。 虚拟机栈 特点:线程私有 描述的是 Java 方法...

JVM 系列 内存分配与回收策略

开启JVM探索新篇章

对象 优先在eden分配 大多数情况下,对象在eden区中分配。当eden区没有足够空间进行分配时,虚拟机将发起一次minor GC。 大对象直接进入老年代 虚拟机提供一个参数(-XX:PretenureSizeThreshold),令大于这个设置值的对象直接在老年代分配。这样做的目的是避免在eden区及两个survivor区之间发生大量的内存复制。 大对象:需要大量连续内存空...

JVM 系列 内存管理之内存区域

开启JVM探索新篇章

Java 内存模型 要求 lock、unlock、read、load、assign、use、store、write 这 8 个操作都具有原子性,但是对于 64 位的数据类型(long 和 double),在模型中特别定义了一条相对宽松的规定:允许虚拟机将没有被volatile修饰的 64 位数据的读写操作划分为 2 次 32 位的操作来执行,即允许虚拟机实现选择可以不保证 64 位数据类型的...

并发编程 系列 综述

开启并发编程探索新篇章

问题 锁

MySQL 系列 查询日志

MySQL 技术内幕:InnoDB存储引擎

错误日志 记录 MySQL 的启动、运行、关闭过程。 记录所有的错误信息,也记录一些警告信息或正确的信息。 记录有关数据库优化的警告信息 慢查询日志 慢查询会导致 CPU,IOPS,内存消耗过高。当数据库遇到性能瓶颈时,大部分时间都是由于慢查询导致的。 开启慢查询日志,可以让 MySQL 记录下查询超过指定时间的语句,之后运维人员通过定位分析,能够很好的优化数据库性能。...

MySQL 系列 二次写

MySQL 技术内幕:InnoDB存储引擎

double write 处理部分写失效的问题,提升数据页的可靠性。 背景 InnoDB 中有记录(Row)被更新时,先将其在 Buffer Pool 中的 page 更新,并将这次更新记录到 Redo Log file 中,这时候 Buffer Pool 中的该 page 就是被标记为 Dirty。在适当的时候(Buffer Pool 不够、Redo 不够,系统闲置等),这些 ...