c# CLR核心机制-垃圾回收

  1. GLR的背景
  2. c#进程堆,线程栈的,值类型和引用类型的区别
  3. 内存的分配和收集问题就产生了GC 
  4. 回收什么样的对象,回收流程,回收算法,和回收策略

 

 阅读指引:CLR核心机制就是垃圾回收, 讲到进程推和线程栈,是因为gc是针对于进程堆来回收,线程栈是用完全部回收的

 

    

 

  1. GLR的背景

CLR是.net fromwork   

core CLR是全新一套的core CLRE为了跨平台  核心都是去实现GC和JIT

 

 

 

 

 

2.c#进程堆,线程栈的,值类型和引用类型的区别

 

 

 

 

 

 

 

 

 从下面可以得出引用类型都是在堆里面的,为什么,因为线程栈,是线程随时可能被回收,如果引用类型放在栈里面,被回收了, 就等于一本字典没有索引页去找里面的内容

 

 

 

 值类型和引用类型的区别

for循环里面new对象和外面new对象的区别

如果一个对象实例被声明在循环内部,那么每次执行循环体时都会为对象重新分配内存并初始化对象实例。初始化(实例化)过程并不会占用过多的时间,但是内存分配会。在某种情况下,你可能无法跑到循环外部去创建对象实例。不过,如果可能的话,重置并重用对象应该是更好的选择。

 

 

 

 

3内存的分配和收集问题就产生了GC 

 

1.内存分配Allocator

 

 

 

 

2.内存收集Collector

 

非托管资源 如ado.net的链接,读写文件,为什么有的时候非托管资源没被包裹在using里面也会被释放,因为c#封装好了,但是如果遇到并发问题这里是会卡主的

 

 

 

4.回收什么样的对象,回收流程,回收算法,和回收策略

 

 

 

 

 

 

#对象越老,生成越长,相当于能逃过垃圾的追杀,那么久更容易逃过第二次

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4..net core  CLR变化

 

posted @   12不懂3  阅读(353)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
历史上的今天:
2017-11-11 JS 判断checkbox 是否选中
创作不易,请勿抄袭,欢迎转载!
点击右上角即可分享
微信分享提示