摘要: System.gc 之后到底发生了什么 ? 本文基于 OpenJDK17 进行讨论 在 JDK NIO 针对堆外内存的分配场景中,我们经常会看到 System.gc 的身影,比如当我们通过 FileChannel#map 对文件进行内存映射的时候,如果 JVM 进程虚拟内存空间中的虚拟内存不足,JVM 在 native 层就会抛出 OutOf 阅读全文
posted @ 2024-04-01 19:56 bin的技术小屋 阅读(1216) 评论(1) 推荐(8) 编辑
摘要: MappedByteBuffer VS FileChannel:从内核层面对比两者的性能差异 本文基于 Linux 内核 5.4 版本进行讨论 自上篇文章《从 Linux 内核角度探秘 JDK MappedByteBuffer》 发布之后,很多读者朋友私信我说,文章的信息量太大了,其中很多章节介绍的内容都是大家非常想要了解,并且是频繁被搜索的内容,所以根据读者朋友的建议,笔者决定将一些重要的 阅读全文
posted @ 2024-03-28 12:36 bin的技术小屋 阅读(728) 评论(0) 推荐(4) 编辑
摘要: 从 Linux 内核角度探秘 JDK MappedByteBuffer 本文涉及到的内核源码版本为: 5.4 ,JVM 源码为:OpenJDK17,RocketMQ 源码版本为:5.1.1 在之前的文章《一步一图带你深入剖析 JDK NIO ByteBuffer 在不同字节序下的设计与实现》 中,笔者为大家详细剖析了 JDK Buffer 的整个设计体系,从总体上来讲, 阅读全文
posted @ 2024-03-19 18:55 bin的技术小屋 阅读(1314) 评论(0) 推荐(3) 编辑
摘要: 一文聊透 Linux 缺页异常的处理 —— 图解 Page Faults 本文基于内核 5.4 版本源码讨论 在前面两篇介绍 mmap 的文章中,笔者分别从原理角度以及源码实现角度带着大家深入到内核世界深度揭秘了 mmap 内存映射的本质。从整个 mmap 映射的过程可以看出,内核只是在进程的虚拟地址空间中寻找出一段空闲的虚拟内存区域 vma 然后分配给本次映射而已。 v 阅读全文
posted @ 2023-12-21 12:45 bin的技术小屋 阅读(2447) 评论(5) 推荐(9) 编辑
摘要: 从内核世界透视 mmap 内存映射的本质(源码实现篇) 本文基于内核 5.4 版本源码讨论 通过上篇文章 《从内核世界透视 mmap 内存映射的本质(原理篇)》的介绍,我们现在已经非常清楚了 mmap 背后的映射原理以及它的使用方法,其核心就是在进程虚拟内存空间中分配一段虚拟内存出来,然后将这段虚拟内存与磁盘文件映射起来,整个 mmap 系统调用就结束了 阅读全文
posted @ 2023-10-10 11:15 bin的技术小屋 阅读(3150) 评论(2) 推荐(13) 编辑
摘要: 从内核世界透视 mmap 内存映射的本质(原理篇) 本文基于内核 5.4 版本源码讨论 之前有不少读者给笔者留言,希望笔者写一篇文章介绍下 mmap 内存映射相关的知识体系,之所以迟迟没有动笔,是因为 mmap 这个系统调用看上去简单,实际上并不简单,可以说是非常复杂的一个系统调用。 如果想要给大家把 mmap 背后的技术本质,正确地,清晰地还原出来 阅读全文
posted @ 2023-09-18 18:16 bin的技术小屋 阅读(4887) 评论(3) 推荐(15) 编辑
摘要: 一步一图带你构建 Linux 页表体系 —— 详解虚拟内存如何与物理内存进行映射 笔者之前在自己的专栏[《聊聊 Linux 内核》](https://mp.weixin.qq.com/mp/appmsgalbum?__biz=Mzg2MzU3Mjc3Ng==&action=getalbum&album_id=2559805446807928833&scene=173&from_m 阅读全文
posted @ 2023-07-21 16:55 bin的技术小屋 阅读(5640) 评论(4) 推荐(19) 编辑
摘要: 深度解读 Linux 内核级通用内存池 —— kmalloc 体系 ![image](https://img2023.cnblogs.com/blog/2907560/202306/2907560-20230621111419985-1823538417.png) 本文是笔者 slab 系列的最后一篇文章,为了方便大家快速检索,先将相关的文章列举出来: - [《细节 阅读全文
posted @ 2023-06-21 11:21 bin的技术小屋 阅读(1315) 评论(0) 推荐(0) 编辑
摘要: 深度解析 slab 内存池回收内存以及销毁全流程 在上篇文章 [《深入理解 slab cache 内存分配全链路实现》](https://mp.weixin.qq.com/s?__biz=Mzg2MzU3Mjc3Ng==&mid=2247488152&idx=1&sn=7c65f8ee28e9cc14a86e9df92b6d2b93&chksm=c 阅读全文
posted @ 2023-05-26 11:32 bin的技术小屋 阅读(647) 评论(0) 推荐(1) 编辑
摘要: 深入理解 slab cache 内存分配全链路实现 本文源码部分基于内核 5.4 版本讨论 在经过上篇文章 《从内核源码看 slab 内存池的创建初始化流程》 的介绍之后,我们最终得到下面这幅 slab cache 的完整架构图: 本文笔者将带大家继续从内核源码的角度继续拆解 slab cache 的实现细节,接下来笔者会基于上面这幅 slab ca 阅读全文
posted @ 2023-05-05 11:34 bin的技术小屋 阅读(660) 评论(0) 推荐(0) 编辑