简介
Self-contained deployments (SCD), 生成一个可自己执行的文件以及所有依赖, 比如一个xxx.exe和一大堆dll, 直接运行即可, 不需要操作系统安装.net core 运行时
Just So So ...
Self-contained deployments (SCD), 生成一个可自己执行的文件以及所有依赖, 比如一个xxx.exe和一大堆dll, 直接运行即可, 不需要操作系统安装.net core 运行时
我们知道在C#和Java明显的一个区别就是C#可以自定义值类型,也就是今天的主角struct
,我们有了更加方便的class
为什么微软还加入了struct
呢?这其实就是今天要谈到的一个优化性能的Tips使用结构体替代类。
那么使用结构体替代类有什么好处呢?在什么样的场景需要使用结构体来替代类呢?今天的文章为大家一一解答。
大家在写代码的时候,相信有很多朋友对 struct
认知不是很足,导致能用 class
的地方绝对不用struct
,但大家有没有发现,最近的几个 C# 版本中,底层框架中有很多 class 的替代品,比如说:
Task 和 ValueTask
Tuple 和 ValueTuple。
本质上来说都是为了提少 GC 负担,提高程序性能。
(1)整体认知
其次,什么是内存泄露?内存泄露是指内存空间上产生了不再被实际使用却又不能被分配的内存空间,其意义很广泛,像内存碎片、不彻底的对象释放等都属于内存泄露现象。内存泄露将导致主机的内存随着程序的运行而逐渐减少,无论其表现形式怎样,它的危害是很大的,因此我们需要努力地避免。
(1).NET GC分代的基本算法
在.NET中引用类型对象实例通常通过引用来访问,而GC判断堆中的对象是否仍然在被使用的依据也是引用。简单地说:当没有任何引用指向堆中的某个对象实例时,这个对象就被视为不再使用。