当前位置: 首页 > wzjs >正文

公司网站建设设计网站建设方案开发

公司网站建设设计,网站建设方案开发,便宜的域名购买,网站建设提供资料C# --- 单例类错误初始化 没有释放资源导致线程泄漏Background原因分析问题一: 错误初始化(使用了箭头函数)问题一: 没有Dispose资源Background 背景: service A的其中一个Api会向mq发送消息问题:线上发现这个服务经常…

C# --- 单例类错误初始化 + 没有释放资源导致线程泄漏

  • Background
  • 原因分析
    • 问题一: 错误初始化(使用了箭头函数)
    • 问题一: 没有Dispose资源

Background

  • 背景: service A的其中一个Api会向mq发送消息
  • 问题:线上发现这个服务经常有几百个线程在同时运行,怀疑是发生了线程泄漏
  • 什么是线程泄漏:代码产生了大量的不应该出现的线程,导致占用过多资源,严重影响系统性能

原因分析

经过排查发现了一下问题代码

public class Dispatch
{public static Dispatch Instance => new Dispatch();private readonly Sender senderpublic Dispatch() { sender = new Sender();}
}public class Sender : IDisposable
{private readonly Task _recoveryTask;public Sender() { recoveryTask = Task.Factory.StartNew(new Action(this.ReceoveryTaskEntry), TaskCreationOptions.LongRunning)}private void RecoveryTaskEntry() {while (!this.Disposed){//impl}}public void Dispose() {_recoveryTask.Dispose()GC.SuppressFinalize(this); // 阻止终结器调用}
}

问题一: 错误初始化(使用了箭头函数)

public static Dispatch Instance => new Dispatch();//等价于
public static Dispatch Instance() 
{return new Dispatch();
}

以上代码在 Dispatch.Insatnce被调用时每次都会新建一个Dispatch实例,而Dispatch的构造方法里会创建并运行一个新的线程,也就是说每个requets都会创建一个新的线程

正确的初始化:保证单例类只有一个实例

public static Dispatch Instance { get; } = new Dispatch();

问题一: 没有Dispose资源

在Dispatch中没有dispose sender, 导致线程没有被释放

public class Dispatch
{public static Dispatch Instance => new Dispatch();private readonly Sender senderpublic Dispatch() { sender = new Sender();}
}

正确实现:在Dispose中释放资源

public class Dispatch
{public static Dispatch Instance => new Dispatch();private readonly Sender senderpublic Dispatch() { sender = new Sender();}public void Dispose() {sender.Dispose()//....}
}
http://www.dtcms.com/wzjs/201908.html

相关文章:

  • 网站怎样做支付接口百度网盘app下载安装手机版
  • 深圳网站建设q.479185700惠沈阳网页建站模板
  • 广东两学一做网站信息流广告代运营
  • 热血传奇网页游戏上海关键词优化外包
  • 做企业网站推广多少钱百度网络科技有限公司
  • 宁波品牌网站建设服务电话免费b2b网站有哪些
  • 帝国网站管理系统入门教程今日头条国际军事新闻
  • 企业建站公司电话上海网络推广团队
  • 建设网站具备的知识英语培训
  • 百度云搜索引擎网站百度快速排名化
  • 有专门做最佳推荐的网站seo免费教程
  • 校园网站模板营销计划书7个步骤
  • 卫计局本年度网站建设工作总结女生seo专员很难吗为什么
  • 深圳网站制作网站建设怎么制作网站深圳博纳免费做网站网站的软件
  • wordpress安装地址郑州seo排名第一
  • 南昌网站免费制作网络优化app哪个好
  • wordpress电商插件seo搜索引擎优化试题及答案
  • 做网站的标签什么意思企业推广宣传方式
  • 微信网站怎么制作流量神器
  • 网站建设管理界面抖音关键词排名查询工具
  • 郑州做商城网站上海网络营销seo
  • 做自媒体常用的图片网站成都关键词排名推广
  • jsp做网站下载图片seo视频教程百度云
  • 个人做电商网站赚钱吗朋友圈的广告推广怎么弄
  • 用wordpress做音乐网站最新舆情信息网
  • 个人申请营业执照流程网站优化外包找谁
  • 一个网站怎么推广网店运营流程步骤
  • 做网站设计电脑需要什么配置交换友情链接的注意事项
  • 清徐网站建设seochinaz查询
  • 纯静态网站是有什么程序做的精准大数据获客系统