会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
叫我安不理
博客园
首页
新随笔
联系
订阅
管理
上一页
1
2
3
4
5
6
7
下一页
2025年1月6日
.NET Core 对象分配(Alloc)底层原理浅谈
摘要: 对象分配策略 .NET程序的对象是由CLR控制并分配在托管堆中,如果是你,会如何设计一个内存分配策略呢? 按需分配,要多少分配多少,移动alloc_ptr指针即可,没有任何浪费。缺点是每次都要向OS申请内存,效率低 预留缓冲区,降低了向OS申请内存的频次。但在多线程情况下,alloc_ptr锁竞争会
阅读全文
posted @ 2025-01-06 17:09 叫我安不理
阅读(935)
评论(2)
推荐(12)
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 叫我安不理
阅读(723)
评论(2)
推荐(19)
2024年12月17日
.NET Core 异常(Exception)底层原理浅谈
摘要: 中断的基础知识 https://www.cnblogs.com/lmy5215006/p/18816120 用户异常 C#的异常,在Windows平台下是完全围绕SEH处理框架来展开。在Linux上则是围绕signal模拟成SEH结构,因为都会进入内核态,所以其开销并不低,内部走了很多流程。 sta
阅读全文
posted @ 2024-12-17 17:34 叫我安不理
阅读(1073)
评论(4)
推荐(16)
2024年12月11日
.NET Core 堆结构(Heap)底层原理浅谈
摘要: .Net托管堆布局 加载堆 主要是供CLR内部使用,作为承载程序的元数据。 HighFrequencyHeap 存放CLR高频使用的内部数据,比如MethodTable,MethodDesc. 通过is判断类型之间的继承关系,调用接口的方法和虚方法,都需要访问MethodTable LowFrequ
阅读全文
posted @ 2024-12-11 15:20 叫我安不理
阅读(1679)
评论(1)
推荐(23)
2024年12月5日
.NET Core 锁(Lock)底层原理浅谈
摘要: CPU原子操作 原子操作,指一段逻辑要么全部成功,要么全部失败。概念上类似数据库事物(Transaction). CPU能够保证单条汇编的原子性,但不保证多条汇编的原子性 那么在这种情况下,那么CPU如何保证原子性呢?CPU本身也有锁机制,从而实现原子操作 眼见为实 int location = 1
阅读全文
posted @ 2024-12-05 17:45 叫我安不理
阅读(3180)
评论(11)
推荐(26)
2024年11月29日
.NET Core 异步(Async)底层原理浅谈
摘要: 简介 多线程与异步是两个完全不同的概念,常常有人混淆。 异步 异步适用于"IO密集型"的场景,它可以避免因为线程等待IO形成的线程饥饿,从而造成程序吞吐量的降低。 其本质是:让线程的cpu片不再浪费在等待上,期间可以去干其它的事情。 要注意的是:Async不能加速程序的执行,它只能做到不阻塞线程。
阅读全文
posted @ 2024-11-29 15:10 叫我安不理
阅读(3233)
评论(6)
推荐(20)
2024年11月25日
.NET Core 线程池(ThreadPool)底层原理浅谈
摘要: 简介 上文提到,创建线程在操作系统层面有4大无法避免的开销。因此复用线程明显是一个更优的策略,且降低了使用线程的门槛,提高程序员的下限。 .NET Core线程池日新月异,不同版本实现都有差别,在.NET 6之前,ThreadPool底层由C++承载。在之后由C#承载。本文以.NET 8.0.8为蓝
阅读全文
posted @ 2024-11-25 17:00 叫我安不理
阅读(3546)
评论(10)
推荐(38)
2024年11月22日
.NET Core 线程(Thread)底层原理浅谈
摘要: 简介 内核态,用户态,线程,进程,协程基本概念不再赘述。 原生线程和用户线程 原生线程 在内核态中创建的线程,只服务于内核态 用户线程 由User Application创建的线程,该线程会在内核态与用户态中间来回穿梭 比如Throw Exception,就会由CLR 线程触发,从用户态切换到内核态
阅读全文
posted @ 2024-11-22 14:02 叫我安不理
阅读(1373)
评论(7)
推荐(14)
2024年11月19日
.NET Core 特性(Attribute)底层原理浅谈
摘要: 简介 烂大街的资料不再赘述,简单来说就是给代码看的注释 Attribute的使用场景 Attribute不仅仅局限于C#中,在整个.NET框架中都提供了非常大的拓展点,任何地方都有Attribute的影子 编译器层 比如 Obsolete,Conditional C#层 GET,POST,Max,R
阅读全文
posted @ 2024-11-19 16:37 叫我安不理
阅读(2039)
评论(1)
推荐(11)
2024年11月15日
.NET Core 反射(Reflection)底层原理浅谈
摘要: 简介 反射,反射,程序员的快乐。 前期绑定与后期绑定 在.NET中,前期绑定(Early Binding)是指在编译时就确定了对象的类型和方法,而后期绑定(Late Binding)或动态绑定是在运行时确定对象的类型和方法。 前置知识:C#类型系统结构 C#作为C++++ ,在类型系统上沿用C++的
阅读全文
posted @ 2024-11-15 09:29 叫我安不理
阅读(2621)
评论(4)
推荐(31)
上一页
1
2
3
4
5
6
7
下一页
公告