【C# .Net GC】强制垃圾回收 和System GC
属性
GC.MaxGeneration:获取系统当前支持的最大代数。
方法
GC.GetTotalMemory(bool forceFullCollection) 方法
true表示该方法先做垃圾收集操作,之后才计算出受控代码分配的字节数。false表示不做垃圾收集,直接计算出受控代码分配的字节数。
GC.Collect
垃圾回收是基于历史经验了,当发生非重复性事件的时候,垃圾自动回收就变的不准确,这时候可用采用手动调用GC.Collect方法清除垃圾。例如在用户保存一个数据之后强制执行一次GC.Collect方法。
GC.Collect(); //强制对所有代进行即时垃圾回收。
Collect(Int32) 强制对 0 代到指定代进行即时垃圾回收。
Collect(Int32, GCCollectionMode) 强制在 GCCollectionMode 值所指定的时间对 0 代到指定代进行垃圾回收。
Collect(Int32, GCCollectionMode, Boolean) 在由 GCCollectionMode 值指定的时间,强制对 0 代到指定代进行垃圾回收,另有数值指定回收是否应该为阻碍性。
Collect(Int32, GCCollectionMode, Boolean, Boolean) 在由 GCCollectionMode 值指定的时间,强制对 0 代到指定代进行垃圾回收,另有数值指定回收应该为阻碍性还是压缩性。
GCCollectionMode:指定垃圾收集是强制的(Default或Forced指回收0~指定的代)还是optimized优化(指能释放大内存和减少碎片化才执行优化)。
using System.Runtime;
//查看GC的类型,以及工作方式。该类在using System.Runtime;命名空间 在.json或xml文件中修改
Console.WriteLine($"IsServerGC:{GCSettings.IsServerGC}");// 释放是服务器GC
Console.WriteLine($"IsServerGC:{GCSettings.LatencyMode}");// 工作方式 FGClass fG = new FGClass();
fG.MakeGarbage();
Console.WriteLine($"GetGeneration:{GC.GetGeneration(fG)}");// 获取当前垃圾对象所在的代 //检索当前认为要分配的字节数。参数指示此方法是否可以在返回之前等待一个短时间间隔,以允许系统收集垃圾和结束对象。
Console.WriteLine($"GetTotalMemory:{GC.GetTotalMemory(false) / 1024}MB");//
Console.WriteLine($"GetGeneration:{GC.GetGeneration(fG)}");// GC.Collect(0);//回收第0代
Console.WriteLine($"GetTotalMemory:{GC.GetTotalMemory(false) / 1024}MB");//
Console.WriteLine($"GetGeneration:{GC.GetGeneration(fG)}");// GC.Collect(2);//回收0~2代
Console.WriteLine($"GetTotalMemory:{GC.GetTotalMemory(false) / 1024}MB");//
Console.WriteLine($"GetGeneration:{GC.GetGeneration(fG)}");// Console.Read();
public class FGClass
{
Version vt;
public void MakeGarbage()
{ for (int i = 0; i < 100; i++)
{
vt = new Version(); } } }
GC.CollectionCount()返回自启动进程以来已经对指定代进行的垃圾回收次数。
以下这些方法是大对象回收时候用到:
CancelFullGCNotification
RegisterForFullGCNotification
WaitForFullGCApproach
WaitForFullGCComplete
AddMemoryPressure和RemoveMemoryPressure
这两个方法主要用于本地资源,比如一个位图占用了50M本地内存,但是托管对象只包含一个HBitMap(4字节或8字节)。但CRL并不知道这个内存压力,它可能允许你分配数百个位图,因为它们占用的托管内存太少了。这两个方法的目的就是要告诉GC它实际的本地资源用了多少内存量,GC知道这个信息后会调整它的垃圾回收策略,当压力变大时,他就强制执行垃圾回收。
【C# .Net GC】强制垃圾回收 和System GC的更多相关文章
- JAVA的垃圾回收机制(GC)
1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...
- java: system.gc()和垃圾回收机制finalize
System.gc()和垃圾回收机制前的收尾方法:finalize(收尾机制) 程序退出时,为每个对象调用一次finalize方法,垃圾回收前的收尾方法 System.gc() 垃圾回收方法 clas ...
- System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
System.GC.Collect();//垃圾回收,回收没有正常关闭的http连接
- 【转载】Java性能优化之JVM GC(垃圾回收机制)
文章来源:https://zhuanlan.zhihu.com/p/25539690 Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我 ...
- Java性能优化之JVM GC(垃圾回收机制)
Java的性能优化,整理出一篇文章,供以后温故知新. JVM GC(垃圾回收机制) 在学习Java GC 之前,我们需要记住一个单词:stop-the-world .它会在任何一种GC算法中发生.st ...
- 浅析JAVA的垃圾回收机制(GC)
1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 注意:垃圾回 ...
- Java垃圾回收机制(GC策略)
Java垃圾回收机制(GC策略) 核心:1,哪些是垃圾?[怎么确定这个是垃圾]:2,如何回收垃圾?[怎么更好收垃圾]. Java语言相对于C++等语言有一个自动垃圾回收机制,只用管使用[实例化对象], ...
- 关于GC进行垃圾回收的时机
前言 今天查看一个同事的代码,发现代码中多处地方使用了GC.Collect()方法,我问他为什么这么做,他说感觉程序中定义了好多变量,怕GC回收不及时,用GC.Collect()可以手动掌控GC进行垃 ...
- C#或者.NET下的强制垃圾回收办法
转载 2011年03月16日 17:21:00 标签: c# / .net / button / object / stream / class 8185 今天来谈谈C#的GC,也就是垃圾回收机制,非 ...
随机推荐
- 1000粉!使用Three.js制作一个专属3D奖牌🥇
背景 破防了 !突然发现 SegmentFault 平台的粉丝数量已经突破 1000 了,它是我的三个博客平台掘金.博客园.SegmentFault中首个粉丝突破 1000 的,于是设计开发这个页面, ...
- uniapp如何生成自己的小程序码并且携带参数
生成小程序码需要用到的参数appId appSecret这两个参数可以再微信公众平台里面登录获取 也可以用测试号里面的获取小程序码步骤1.首先要请求官方的API`https://api.weixin ...
- 由浅入深,66条JavaScript面试知识点
前言 我只想面个CV工程师,面试官偏偏让我挑战造火箭工程师,加上今年这个情况更是前后两男,但再难苟且的生活还要继续,饭碗还是要继续找的.在最近的面试中我一直在总结,每次面试回来也都会复盘,下面是我这几 ...
- K8S配置多集群访问
中文官档: http://docs.kubernetes.org.cn/823.html 背景:我们通过会有多个k8s集群,例如集群(cn-k8s)和集群(jp-k8s),那个就需要有一台服务器可以同 ...
- 微服务架构 | 5.1 使用 Netflix Hystrix 断路器
目录 前言 1. Hystrix 基础知识 1.1 Hystrix 断路器强调调用 1.2 两大类别的 Hystrix 实现 1.3 舱壁策略 1.4 Hystrix 在远程资源调用失败时的决策过程 ...
- python 小兵(6)函数进阶
阅读目录 函数参数-动态参数 名称空间 函数的嵌套 gloabal.nonlocal 回到顶部 函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很 ...
- Java协变、逆变、类型擦除
协变.逆变 定义 Java中String类型是继承自Object的,姑且记做String ≦ Object,表示String是Object的子类型,String的对象可以赋给Object的对象.而Ob ...
- 基于redis实现tomcat的session会话保持 (转)
出处:https://cloud.tencent.com/developer/article/1402997 基于redis实现tomcat的session会话保持 在实际生产中,我们经常部署应用服务 ...
- js window.event
转载请注明来源:https://www.cnblogs.com/hookjc/ 描述event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等.event对象只在事件发生的 ...
- yum本地源仓库安装报错 被锁定如何解决?
yum安装报错被锁定如何解决 上图!!!!!如图的报错 解决方法: 是不是很简单 智商在地上摩擦~~~