.net C#垃圾回收
类比:
自己去拿盘子 = 申请内存
用完之后自已放到残渣中 = 手动释放
阿姨来回收 = 自动回收(比如垃圾太多了,新客户来了)
自己叫阿姨来回收 = 手动调用自动回收
CLR的一个核心功能–垃圾回收
垃圾回收的目的:提高内存利用率
垃圾回收器,只回收托管堆中内存资源,不回收其他资源(数据库连接、文件句柄、网络端口)
什么样的对象才会被回收?
(1) 没有变量引用的变量,表示可以被回收了
什么时候回收
(1) 不确定,当程序需要新内存的时候开始执行回收
(2) GC.Collect()手动调用回收。不建议使用,垃圾回收时会暂停一下(非常短暂)
垃圾回收器中"代"的概念:
(1) 共3代:第0代,第1代,第2代
GC.Collect(0);//回收第0代
(2) 各代的回收频率:第0代最高,其次第1代,再次第2代。也就是说越老的对象生存几率越大
第0代,第1代,第2代指定固定大小的空间
创建对象时默认往前代(第0代)放入,如果第0代没有空间了,开始准备垃圾回收,
其中第0代有些对象因为还有引用所以释放不了,就往后代(第1代)放。这时候第0代就没有东西了。这个时候新对象就放入时就依然进入第0代,如果第0代又满了的话,就开始垃圾回收第0代,如果到后面第1代满了,开始回收第1代,第1代存活下来的就放到第2代了。如果到后面第2代满了且都活着,那么这个时候第1代因为满了还有一些释放不了的需要放到第2代因为第2代空间满了进不去。这个时候会对每代开始尝试扩容。如果最后扩容不了,开始抛异常
net中垃圾回收机制:mark-and-compact(标记和压缩),一开始假设所有对象都是垃圾
除了内存资源外其他资源怎么办?或则Dispose
.net C#垃圾回收相关推荐
- Java垃圾回收之老年代垃圾收集器
1.Serial Old 收集器(-XX: +UseSerialOldGC, 标记-整理算法) 单线程收集,进行垃圾收集时,必须暂停所有工作线程 简单高效,Client模式下默认的老年代收集器 2.P ...
- 垃圾回收 内存管理 python
20220225 https://mp.weixin.qq.com/s/94SmSNEkwmz-Eu-hBUo0Lg Python的内存管理机制 在windows 中直接在任务管理其中关掉python ...
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?...
一.垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 1.对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址.大小以及使用情况. 通常, ...
- Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、
1. 字典根据键从小到大排序? In[38]: dic = {"name": "Tom", "age": 30, "country ...
- c# 垃圾回收是引用类型而言的
c# 垃圾回收是引用类型而言的 转载于:https://www.cnblogs.com/C-CHERS/p/3646387.html
- java 对象被回收的例子_Java对象的后事处理——垃圾回收(二)
1 先谈Finalize() finalize()能做的所有工作,使用try-finally或者其他方式都可以做得更好.更及时,所以笔者建议大家完全可以忘掉Java语言中有这个方法的存在. --< ...
- java分代技术_JVM调优总结(六):分代垃圾回收详述2
分代垃圾回收流程示意 选择合适的垃圾收集算法 串行收集器 用单线程处理所有垃圾回收工作,因为无需多线程交互,所以效率比较高.但是,也无法使用多处理器的优势,所以此收集器适合单处理器机器.当然,此收集器 ...
- 详细介绍Java垃圾回收机制
垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机 ...
- 编程基础 垃圾回收_为什么我回收编程问题
编程基础 垃圾回收 by Amy M Haddad 通过艾米·M·哈达德(Amy M Haddad) 为什么我回收编程问题 (Why I Recycle Programming Problems) M ...
- 想知道垃圾回收暂停的过程中发生了什么吗?查查垃圾回收日志就知道了!
\ 关键点 \ 垃圾回收日志中包括着一些关键性能指标: \ 要做一次正确的垃圾回收分析需要收集许多数据,所以好的工具是非常必要的: \ 除了垃圾回收之外还有很多事件都可能会让应用程序暂停: \ 让你的 ...
最新文章
- 直接依赖,间接依赖,可选依赖,排除依赖,依赖冲突
- centos中文乱码修改字符编码使用centos支持中文
- 图书 网管天下系列图书 之 网络管理工具实用详解 目录
- 20145237 《信息安全系统设计基础》第2周学习总结
- php程序员写bug,程序员的修炼-我们为什么会编写BUG
- vi通过Vundle安装和删除插件
- Kafka笔记-搭建及单机生产者、消费者操作
- SpringCloud 使用Zuul构建微服务网关
- 够狠 | 单点登录三种方式,够狠!够劲爆!
- bzoj3172:[Tjoi2013]单词
- linux常用命令详解(二)
- 上海译文公布2019年“新书目录” 名家名译作品结集出版
- windows ping不通虚拟机ip地址
- android studio 中要在app名称中添加特殊符号
- CUDA加速——共享内存介绍及其应用
- Customize your Chatter Experience.
- go-ipfs-api
- python编码问题无法复现_彻底解决Python编码问题
- 分段函数的期望和方差_题组25随机变量的分布列、期望与方差、正态分布
- 音乐人工智能在国内计算机领域虽然有所进步但发展缓慢