- 博客(7)
- 收藏
- 关注
原创 MySql学习笔记-InnoDB架构概述:内存结构
InnoDB中的内存部分知识点主要分为以下几大块:Buffer Pool缓冲池、额外内存池、Redo Log Buffer(重做日志缓冲)、双写缓冲池以及涉及到内存数据落盘的逻辑和CheckPoint检查点机制。
2022-03-03 14:52:30
668
原创 mac执行SVN命令出现xcrun: error: invalid active developer path解决方法
mac执行SVN命令出现xcrun: error: invalid active developer path解决方法周日闲的蛋疼,下载了个xcode,但是下载到一半就取消了,然后周一发现idea自带的SVN不能用了,它提示找不到SVN的客户端执行文件,那个路径发现根本就没有那个目录,但是根本没有删除任何东西,后来找到一个git遇到的类似的情况 试了试 还真的解决了。 解决方法如下: 打开终端
2021-03-22 17:21:48
2449
1
原创 MySql学习笔记-InnoDB架构概述:硬盘结构
InnoDB的主要的磁盘文件主要分为三大块:一是系统表空间,二是用户表空间,三是redo日志文件和归档文件。 重做日志文件 默认情况下,在InnoDB存储引擎的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件,这就是InnoDB的重做日志文件(redo log file),它记录了对于InnoDB存储引擎的事务日志。 重做日志文件的作用是什么? 当InnoDB的数据存储文件发生错误时,重做日志文件就能派上用场。InnoDB存储引擎可以使用重做日志文件将数据恢复为正确状态,以此来保
2021-03-22 17:15:21
3231
5
原创 JVM学习笔记-垃圾回收之检测垃圾的方法
引用计数算法 原理:对象A被其他对象引用时,引用计数+1,当其他对象被垃圾回收时,对象A的引用计数-1,当对象A的引用计数=0时,对象A可被垃圾回收。 优点:实现简单,判定效率高 缺点:需要额外的空间去存储计数器,关联更新计数时增加了时间开销,无法解决循环依赖 补充:Cpython(C语言开发的Python解释器)使用双向链表解决循环依赖问题,但是需要额外字段去存储标识数据(gc_refs),费空间、费性能 可达性算法 什么样的对象可作为GCRoot: 如果一个指针,他保存了堆内存里的对象地址,但.
2021-01-14 15:49:09
219
原创 JVM学习笔记-垃圾回收之安全点与安全区域
安全点 程序只有在特定位置才能进行GC,这些位置被称为安全点。 安全点的选定基本上是以程序“是否具有让程序长时间执行的特征”为标准进行选定的(方法调用、循环跳转、异常跳转等) 安全点太少可能导致GC等待时间太长,太频繁会影响系统性能。 如何判断发生GC时所有线程是否都在安全点上 - 主动式中断:设置一个中断标志,当线程走到此位置时,判断标志是否为真,如果为真则将自己挂起等待GC - 抢先式中断:当GC发生时中断全部线程来判断是否都在安全点上,恢复不在安全点上的线程让他跑到安全点上(没有虚拟机使用这种方式,
2021-01-12 16:24:00
418
原创 JVM学习笔记-JIT编译优化
JIT编译优化 公共子表达式消除– ab+bc = (a+b)*c 方法内联–将方法调用直接替换称方法体中的代码以减少压栈和出栈的开销 逃逸分析–确定方法内被定义的对象能否被外部方法引用 全局变量赋值逃逸 方法返回值逃逸 实例引用逃逸 线程逃逸(共享变量或赋值给类变量) 针对没有逃逸的对象可以做的优化 对象的栈上内存分配–不会逃逸的对象创建在栈内存中(有几率,并不是所有),减少GC次数 同步锁消除–不会逃逸的对象不需要加锁,在编译时就将同步锁去掉,以减少加锁、解锁带来的资源开销 标量替换–当A对象
2020-11-11 22:24:59
142
1
原创 关于零拷贝
什么是DMA 在了解零拷贝之前,我们先要了解一个概念叫做DMA,详情百度-DMA Direct Memory Access,直接存储器访问 CPU将地址总线、数据总线、有关控制的总线的数据权交给DMA引擎 它允许不同速度的硬件装置来沟通,而不需要依赖于 CPU 的大量中断负载。否则,CPU 需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU 对于其他的工作来说就无法使用(cpu与DMA分时使用内存)。 停止CPU访问内存; 周期挪用; DMA与CPU交替访问内存
2020-06-23 19:48:39
449
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人