2020-09-18

ASP.NET Core 性能最佳实践(二)大对象及GC

减少分配大对象

ASP.NET Core中,垃圾回收器会自动分配及回收内存。这意味着开发人员不需要关心内存是何时,如何释放的,但清理内存需要占用CUP时间,因此开发人员应尽量减少在“热代码路径”上分配对象。垃圾回收在处理大对象(>85KB)时,代价很大。大对象存储在大对象堆中,需要一个Full GC (2代对象回收),不同于0代和1代对象,2代对象回收需要暂停程序执行,频繁的收集和分配大对象会导致性能不稳定。

建议操作:

  • 将频繁使用的大对象缓存起来,以避免高代价的内存分配。
  • 使用 ArrayPool<T>作为缓存池,存储大集合。
  • 不要在热代码路径上分配大量,生命周期很短的大对象。

前面讲到的很多问题都可以通过 PerfView,查看垃圾回收状态(GC)进行诊断,检测项包括:

  • 垃圾回收暂停时间
  • 垃圾回收占用的处理器百分比
  • 0代,1代,2代回收各有多少

更多内容请查看 Garbage Collection and Performance.


原文转载:http://www.shaoqun.com/a/476417.html

跨国采购网:https://www.ikjzd.com/w/2270.html
patents:https://www.ikjzd.com/w/857
wario:https://www.ikjzd.com/w/887
卖家须谨慎!印度尼西亚社会动荡清关难:https://www.ikjzd.com/home/97357
亚马逊运营问题QA集锦_亚马逊运营常见问题回答:https://www.ikjzd.com/home/123453
616跨境电商节新设财税专场论坛--剖析合规出海痛点:https://www.ikjzd.com/home/98564

减少分配大对象ASP.NETCore中,垃圾回收器会自动分配及回收内存。这意味着开发人员不需要关心内存是何时,如何释放的,但清理内存需要占用CUP时间,因此开发人员应尽量减少在&ldquo;热代码路径&rdquo;上分配对象。垃圾回收在处理大对象(>85KB)时,代价很大。大对象存储在大对象堆中,需要一个FullGC(2代对象回收),不同于0代和1代对象,2代对象回收需要暂停
跨境通电子商务网站:https://www.ikjzd.com/w/1329
coles:https://www.ikjzd.com/w/2506
万国邮政联盟:https://www.ikjzd.com/w/861
打折网站:https://www.ikjzd.com/w/74
亚马逊HQ2选址花落谁家? 西雅图&纽约纷纷争奇斗艳!:https://www.ikjzd.com/home/14754
每天分析运营数据的你,关心过时间成本吗?:https://www.ikjzd.com/home/106994

No comments:

Post a Comment