叫我安不理

2025年2月11日

.NET Core内存结构体系(Windows环境)底层原理浅谈

摘要: 物理内存与虚拟内存 物理内存(Physical Memory) 定义:物理内存是计算机硬件中的实际RAM(如DDR5内存条),直接通过总线与CPU连接,用于临时存储运行中的程序和数据。 虚拟内存(Virtual Memory) 定义:由操作系统管理的抽象内存层,通过结合物理内存和磁盘空间(如页面文件 阅读全文

posted @ 2025-02-11 17:40 叫我安不理 阅读(191) 评论(1) 推荐(5) 编辑

2025年2月6日

.NET Core GC模式(gc mode)底层原理浅谈

摘要: 简介 CLR的GC模式与JVM的GC模式理念不同,相对JVM的各种小参显得比较简陋,CLR的理念是约定优于配置,并根据程序类型来分提供了几个默认的选项给大家选择。 CS程序默认使用的工作站模式(WorkStation Mode) BS程序默认使用的服务器模式(Server Mode) 不同的模式,堆 阅读全文

posted @ 2025-02-06 10:38 叫我安不理 阅读(351) 评论(2) 推荐(3) 编辑

2025年1月25日

.NET Core GC压缩(compact_phase)底层原理浅谈

摘要: 简介 终于来到了GC的最后一个步骤,在此之间,大量预备工作已经完成。万事俱备,只欠东风 清除 如果GC决定不压缩,它将仅执行清除操作。清除操作非常简单,把所有不可到达对象(gap),转换成Free。也就是转换成空闲内存空间。 由于所有的繁重计算任务在plan_phase阶段均已完成,所以步骤比较简单 阅读全文

posted @ 2025-01-25 10:16 叫我安不理 阅读(590) 评论(2) 推荐(5) 编辑

2025年1月16日

.NET Core GC计划阶段(plan_phase)底层原理浅谈

摘要: 简介 在mark_phase阶段之后,所有对象都被标记为有用/垃圾对象。此时,垃圾回收器已经拥有启动垃圾回收的所有前置准备工作。 这个时候,垃圾回收期应该执行"清除回收"还是"压缩回收"呢?只有做一下试验才能得出理论支撑。 模拟压缩 这里会有一个悖论,如果你要知道压缩是否划得来,那你就得先压缩后查看 阅读全文

posted @ 2025-01-16 15:15 叫我安不理 阅读(709) 评论(5) 推荐(6) 编辑

2025年1月13日

.NET Core GC标记阶段(mark_phase)底层原理浅谈

摘要: 简介 C# 采用基于代的回收机制,并使用了更复杂的 链式跟踪算法 来识别对象是否为垃圾。 GC触发的原因 截至到.NET 8,GC触发的原因有18种 enum gc_reason { reason_alloc_soh = 0,//小对象堆,快速分配预算不足 reason_induced = 1,// 阅读全文

posted @ 2025-01-13 12:23 叫我安不理 阅读(359) 评论(0) 推荐(3) 编辑

2025年1月6日

.NET Core 对象分配(Alloc)底层原理浅谈

摘要: 对象分配策略 .NET程序的对象是由CLR控制并分配在托管堆中,如果是你,会如何设计一个内存分配策略呢? 按需分配,要多少分配多少,移动alloc_ptr指针即可,没有任何浪费。缺点是每次都要向OS申请内存,效率低 预留缓冲区,降低了向OS申请内存的频次。但在多线程情况下,alloc_ptr锁竞争会 阅读全文

posted @ 2025-01-06 17:09 叫我安不理 阅读(777) 评论(2) 推荐(11) 编辑

2024年12月24日

.NET Core 类型系统(Types System)底层原理浅谈

摘要: C#源码到汇编的过程 在类型系统之前,我们先来了解一下C#的源码是如何一步一步被编译成机器码的 C#源码被Roslyn编译器编译成DLL DLL中包含了MetaData与IL Code 先由加载器根据MetaData构建出类型系统的数据结构 再由JIT编译器根据IL Code,懒加载式的生成汇编等 阅读全文

posted @ 2024-12-24 12:14 叫我安不理 阅读(518) 评论(2) 推荐(19) 编辑

2024年12月17日

.NET Core 异常(Exception)底层原理浅谈

摘要: 中断与异常模型图 内中断 内中断是由 CPU 内部事件引起的中断,通常是在程序执行过程中由于 CPU 自身检测到某些异常情况而产生的。例如,当执行除法运算时除数为零,或者访问了不存在的内存地址,CPU 就会产生内中断。 硬件异常 CPU内部产生的异常事件 故障Fault 故障是在指令执行过程中检测到 阅读全文

posted @ 2024-12-17 17:34 叫我安不理 阅读(893) 评论(4) 推荐(16) 编辑

2024年12月11日

.NET Core 堆结构(Heap)底层原理浅谈

摘要: .Net托管堆布局 加载堆 主要是供CLR内部使用,作为承载程序的元数据。 HighFrequencyHeap 存放CLR高频使用的内部数据,比如MethodTable,MethodDesc. 通过is判断类型之间的继承关系,调用接口的方法和虚方法,都需要访问MethodTable LowFrequ 阅读全文

posted @ 2024-12-11 15:20 叫我安不理 阅读(1455) 评论(1) 推荐(23) 编辑

2024年12月5日

.NET Core 锁(Lock)底层原理浅谈

摘要: CPU原子操作 原子操作,指一段逻辑要么全部成功,要么全部失败。概念上类似数据库事物(Transaction). CPU能够保证单条汇编的原子性,但不保证多条汇编的原子性 那么在这种情况下,那么CPU如何保证原子性呢?CPU本身也有锁机制,从而实现原子操作 眼见为实 int location = 1 阅读全文

posted @ 2024-12-05 17:45 叫我安不理 阅读(2514) 评论(11) 推荐(26) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示