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

昌邑做网站的公司建设官方网站企业登录

昌邑做网站的公司,建设官方网站企业登录,王也道长高清壁纸,wordpress 带分页的主题一#xff1a;背景 1. 讲故事 中秋国庆长假结束#xff0c;哈哈#xff0c;在老家拍了很多的短视频#xff0c;有兴趣的可以上B站观看#xff1a;https://space.bilibili.com/409524162 #xff0c;今天继续给大家分享各种奇奇怪怪的.NET生产事故#xff0c;希望能帮助…一背景 1. 讲故事 中秋国庆长假结束哈哈在老家拍了很多的短视频有兴趣的可以上B站观看https://space.bilibili.com/409524162 今天继续给大家分享各种奇奇怪怪的.NET生产事故希望能帮助大家在未来的编程之路上少踩坑。 话不多说这篇看一个.NET程序集泄露导致的CLR私有堆泄露的案例这个泄露和 JsonConvert 有关哈哈相信你肯定比较惊讶 二WinDbg 分析 1. 到底是哪里的泄露 首先观察一下进程的提交内存的大小即通过 !address -summary 观察。 0:000 !address -summary --- Usage Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal Free 390 7dfa63fa8000 ( 125.978 TB) 98.42% unknown 13628 20532974000 ( 2.020 TB) 99.92% 1.58% Heap 8143 04042b000 ( 1.004 GB) 0.05% 0.00% Stack 186 01f8e0000 ( 504.875 MB) 0.02% 0.00% Image 1958 009775000 ( 151.457 MB) 0.01% 0.00% Other 9 0001d7000 ( 1.840 MB) 0.00% 0.00% TEB 62 00007c000 ( 496.000 kB) 0.00% 0.00% PEB 1 000001000 ( 4.000 kB) 0.00% 0.00%--- Type Summary (for busy) ------ RgnCount ----------- Total Size -------- %ofBusy %ofTotal MEM_MAPPED 312 20000a06000 ( 2.000 TB) 98.92% 1.56% MEM_PRIVATE 21717 591ecd000 ( 22.280 GB) 1.08% 0.02% MEM_IMAGE 1958 009775000 ( 151.457 MB) 0.01% 0.00%--- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal MEM_FREE 390 7dfa63fa8000 ( 125.978 TB) 98.42% MEM_RESERVE 4509 2050fc14000 ( 2.020 TB) 99.89% 1.58% MEM_COMMIT 19478 08c434000 ( 2.192 GB) 0.11% 0.00% 当前的提交内存占用了 2.19G进程堆占用 1G 差不多占了一半但不能说明就是非托管内存泄露接下来继续观察下托管堆。 0:000 !eeheap -gc Number of GC Heaps: 8 ------------------------------ Heap 7 (000001C4971013A0) generation 0 starts at 0x000001C817D201A0 generation 1 starts at 0x000001C817C878D8 generation 2 starts at 0x000001C817261000 ephemeral segment allocation context: nonesegment begin allocated size 000001C817260000 000001C817261000 000001C819013F98 0x1db2f98(31141784) Large object heap starts at 0x000001C907261000segment begin allocated size 000001C907260000 000001C907261000 000001C907261018 0x18(24) Pinned object heap starts at 0x000001C987261000 000001C987260000 000001C987261000 000001C9872ABA50 0x4aa50(305744) Heap Size: Size: 0x1dfda00 (31447552) bytes. ------------------------------ GC Heap Size: Size: 0xba26488 (195191944) bytes. 从卦中可以看到当前的托管堆占用仅 195M这就更好的验证当前确实存在非托管内存泄露由于非托管内存没有开启 ust也没有 perfview 的etw文件所以没有好的方式进一步挖掘到这里可能就止步不前了。 2. 到底是哪里的泄露 在 C# 所处的 Windows 进程中其实有很多的堆比如crt堆ntheap堆gc堆clr私有堆堆外VirtualAlloc调试没有标准答案不断的假设试探摸着石头过河言外之意就是这个堆没问题不代表其他堆也没有问题这样想思路就比较顺畅了我们可以看看其他的堆比如这里的 CLR私有堆使用 !eeheap -loader 观察。 0:000 !eeheap -loader Loader Heap: -------------------------------------- ... Module 00007ff846e034c0: Size: 0x0 (0) bytes. Module 00007ff846e03930: Size: 0x0 (0) bytes. Module 00007ff846e04180: Size: 0x0 (0) bytes. Module 00007ff846e047e0: Size: 0x0 (0) bytes. Module 00007ff846e04e40: Size: 0x0 (0) bytes. Total size: Size: 0x0 (0) bytes. -------------------------------------- Total LoaderHeap size: Size: 0x47252000 (1193615360) bytes total, 0x1f68000 (32931840) bytes wasted.从卦中可以看到有非常多的 module 迸射出来估计有几万个并且可以看到总的大小是 1.19G到这里基本就搞清楚了然来是 程序集泄露。 这里稍微补充一下像这种问题早期可以使用 dotnet-counter 或者 Windows 的程序集指标 监控一下或许你就能轻松找出原因截图如下 PS C:\Users\Administrator\Desktop dotnet-counters monitor -n WebApplication2 而且 dotnet-counter 还是跨平台的非常实用大家可以琢磨琢磨接下来抽一个module 用命令 !dumpmodule -mt 00007ff846e034c0 观察下内部到底有哪些类型。 0:000 !dumpmodule -mt 00007ff846e034c0 Name: Unknown Module Attributes: Reflection IsDynamic IsInMemory Assembly: 000001c9e193b9e0 BaseAddress: 0000000000000000 ...Types defined in this moduleMT TypeDef Name ------------------------------------------------------------------------------ 00007ff846e03db0 0x02000002 Types referenced in this moduleMT TypeRef Name ------------------------------------------------------------------------------ 00007ff820ff5748 0x02000002 xxx.xxx.Json.Converters.PolymorphismConverter1 00007ff820e710f8 0x02000003 xxx.xxx.Models.IApiResult0:000 !dumpmt -md 00007ff846e03db0 Number of IFaces in IFaceMap: 0 -------------------------------------- MethodDesc TableEntry MethodDesc JIT Name 00007FF822F05FA8 00007ff823285b50 NONE xxx.Json.Converters.PolymorphismConverter1 00007FF822EFD5E8 00007ff82323b1b8 NONE System.Text.Json.Serialization.JsonConverter1 00007FF822EFD5F0 00007ff82323b1c8 NONE System.Text.Json.Serialization.JsonConverter1 00007FF8414CB978 00007ff846e03d88 JIT IApiResultDynamicJsonConverter..ctor() 仔细分析卦中信息可以很明显的看到。 Json.Converters.PolymorphismConverter 看样子和牛顿有关系并且还是一个自定义的 JsonConvert。 IApiResult 和 IApiResultDynamicJsonConverter 看样子是一个接口的返回协议类需要在代码中重点关注。 有了这些信息接下来就是重点关注代码中的 PolymorphismConverter 类果然就找到了一处。 从类的定义来看一般这种东西都是在 ConfigureServices 方法中做 初始化定义 的按理说问题不大那为什么会有问题呢还得要查下它的引用终于给找到了截图如下 这是一个低级错误哈每次读取 ApiResult.Data 的时候都要 jsonSerializerOptions.AddPolymorphism(); 操作也就每次都会创建程序集终于真相大白。 三总结 这种程序集泄露导致的生产事故不应该哈反应了团队中多人协作的时候还是有待提高
http://www.w-s-a.com/news/100432/

相关文章:

  • 微信公众号电商网站开发wordpress增加论坛
  • 网站建设视频百度网盘下载免费wordpress搭建
  • 哈尔滨市网站建设公司汕头市公司网站建设平台
  • 东莞网站建设方案外包甘肃两学一做网站
  • 网站建设优化排名推广平面设计职业学校
  • 网后台的网站怎么做网站代理商
  • 网站如何转移到新的空间服务器上手机无人区离线地图app
  • 网站建设模板的买域名做网站的坏处
  • 长春做网站qianceyun做景观素材有哪几个网站
  • 自己建的网站也要注册域名吗邯郸市做网站
  • 天津网站建设制作软件潍坊个人做网站
  • 重庆城市建设集团官方网站php用什么做网站服务器
  • 深圳坪山站重庆市园林建设有限公司网站
  • 网站建设图片教程如何用自己的电脑建网站
  • 《网页设计与网站建设》A卷答案广东新闻联播
  • 海南专业网站运营托管wordpress 去掉主题
  • 企业品牌网站制作甜品制作网站
  • 手机网站怎么制作影响力网站建设
  • 猪八戒网站做私活赚钱吗一尊网 又一个wordpress站点
  • 上海市做网站的公司滨州哪里做网站
  • 简单的网站建设步骤wordpress 贴吧主题
  • 金泉网做网站找谁表格做网站
  • 北京做兼职从哪个网站好江西省建设监督网站电子网
  • 什么网站做生鲜比较好安徽建设厅城乡官网
  • 域名购买网站有哪些问题上海装修网站建设
  • 找人做seo要给网站程序河北建设网网站
  • 哪家做网站性价比高wordpress最新文章链接插件
  • 维修网站怎么做移动互联网应用程序指的是什么
  • 张家界建设网站门户网站的建设原理
  • 企业通用网站模板湖南网站建设企业