zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    网页导出PDF文件
    图片翻转导航
    瀑布流之ajax
    楼梯效果
    数码时钟
    数字字母随机验证码
    kafka shell
    zookeeper shell
    正则
    Linux(一)
  • 原文地址:https://www.cnblogs.com/flame7/p/13693181.html
Copyright © 2011-2022 走看看