.net通用垃圾收集优化技术

这篇具有很好参考价值的文章主要介绍了.net通用垃圾收集优化技术。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Avoid unnecessary allocations in hot paths

For example, in a tight loop or frequently called method, try to avoid creating new objects.

Bad:

for(int i = 0; i < 100; i++) {
  var obj = new MyObject();
  //...
}

Good:

MyObject obj = null;
for(int i = 0; i < 100; i++) {
  if(obj == null) {
    obj = new MyObject(); 
  }
  // Reuse obj instead of reallocating
}

Reuse buffers instead of allocating new ones

Avoid unnecessary allocations in hot paths

Reuse buffers instead of allocating new ones

For byte arrays or other buffers, allocate once and reuse instead of reallocating.

Bad:

byte[] buffer = new byte[1024];

void ProcessData() {
  buffer = new byte[data.Length]; // re-allocate each time
  //...
}

Good:

byte[] buffer = new byte[1024];

void ProcessData() {
  if(buffer.Length < data.Length) {
    // Resize only if needed
    buffer = new byte[data.Length]; 
  }

  // Reuse buffer
  //...
}

Use structs instead of classes where possible

Use structs instead of classes where possible

Structs can avoid heap allocations.

Bad:

class Data {
  public int x;
  public int y;
}

Data data = new Data(); // allocated on heap

Good:

struct Data {
   public int x;
   public int y; 
}

Data data; // allocated on stack

Here are some examples to illustrate those general garbage collection optimization techniques:文章来源地址https://www.toymoban.com/news/detail-736390.html

到了这里,关于.net通用垃圾收集优化技术的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通用人工智能技术(深度学习,大模型,Chatgpt,多模态,强化学习,具身智能)

    目录 前言 1.通用人工智能 1.1 生物学分析 1.2具身智能 1.2.1当前的人工智能的局限 1.2.2 具身智能实现的基础 1.2.3 强化学习(决策大模型) 2.结论 往期文章 参考文献       目前的人工智能实质上只是强人工智能,或者说单个领域的通用人工智能。比方说Chatgpt它属于自然语言

    2024年02月07日
    浏览(87)
  • JVM垃圾回收算法和CMS垃圾收集器

    目录 判断一个对象是否死亡? 1、引用计数法  2、可达性分析算法 三色标记 垃圾收集算法 1、分代收集理论  2、垃圾回收算法 标记-清除 标记-复制 标记-整理 CMS(Concurrent Mark Sweep)收集器 CMS垃圾收集器步骤 CMS垃圾收集器优缺点 垃圾收集需要完成的三件事情: 哪些内存需

    2024年02月10日
    浏览(48)
  • jvm垃圾收集算法

    由于《分代收集理论》和不同垃圾收集算法,Java堆应该被划分为不同区域,一般至少会把Java堆划分为 新生代(Young Generation) 和 老年代(Old Generation)两个区域 。 垃圾收集器可以只回收其中某一个或者某些部分的区域对应不同的垃圾回收: “Minor GC”:新生代的垃圾收集

    2024年02月07日
    浏览(43)
  • 【JVM】垃圾收集算法

    当前商业虚拟机的垃圾收集器,大多数都遵循了“分代收集”(Generational Collection)[1]的理论进 行设计,分代收集名为理论,实质是一套符合大多数程序运行实际情况的经验法则,它建立在两个分代假说之上: 弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕

    2024年02月10日
    浏览(47)
  • Java垃圾收集机制

    目录 前言 判断对象是否存活 引用计数算法 可达性分析算法 GC Root的产生 Java中的四种引用类型 1.强引用 强引用弱化方式 方式1:使对象指向null 方式2:使对象超出作用域范围 2.软引用 3.弱引用 4.虚引用 垃圾收集算法 分代收集理论 垃圾收集算法分类 1.标记-清除算法(Mark-Swe

    2024年02月09日
    浏览(41)
  • 分代收集 + 垃圾回收算法

    1. 弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的 2. 强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消亡 3. 跨代引用假说(Intergenerational Reference Hypothesis):跨代引用相对于同代引用来说仅占极少数 💛 收集器应该将J

    2024年02月12日
    浏览(77)
  • 垃圾收集器

    目录 1.垃圾判断 1.1 引用计数法: 1.2 可达性分析: 1.3 常见的GC Roots有: 2.垃圾回收方式:垃圾收集器 2.1 CMS收集器: 2.2 G1收集器: 1.1 引用计数法:         对象有一个引用计数器,引用一次计数器就加1,计数器为0就是没有引用,但存在循环引用问题 1.2 可达性分析:

    2024年02月11日
    浏览(42)
  • JVM 垃圾收集器

    重点:CMS,G1,ZGC 主要垃圾收集器如下,图中标出了它们的工作区域、垃圾收集算法,以及配合关系。 Serial 收集器 Serial 收集器是最基础、历史最悠久的收集器。 如同它的名字(串行),它是一个单线程工作的收集器,使用一个处理器或一条收集线程去完成垃圾收集工作。

    2024年02月10日
    浏览(50)
  • JVM 垃圾收集

    分代理论 弱分代假说:绝大多数对象都是朝生夕灭,即绝大多数对象都是用完很快需要销毁的。 强分代假说:熬过多次垃圾收集过程的对象就越难以消亡,即如果对象经过多次垃圾收集后仍存活,那么这些对象一般是长久存在难以消亡的,即进入永久代。 跨代引用假说:跨

    2024年02月11日
    浏览(43)
  • HotSpot垃圾收集算法实现细节

    在可达性分析算法中,由于GC Roots众多,所以在从GC Roots集合中进行引用链查找时会耗费大量时间。 迄今为止, 所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的 ,因此毫无疑问根节点 枚举与之前提及的整理内存碎片一样会面临相似的“Stop The World”的困扰。 现

    2024年02月09日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包