上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 40 下一页
摘要: 一:背景 在 CLR 源码中有很多的 extern 和 extern "C" 这样的关键词,比如下面这些代码: extern size_t gc_global_mechanisms[MAX_GLOBAL_GC_MECHANISMS_COUNT]; extern DWORD g_dwHandles; 阅读全文
posted @ 2022-09-02 10:46 一线码农 阅读(874) 评论(0) 推荐(3) 编辑
摘要: 一:背景 相信大家在分析 dump 时,经常会看到 WKS 和 SRV 这样的字眼,如下代码所示: 00007ffa`778a07b8 coreclr!WKS::gc_heap::segment_standby_list = 0x00000000`00000000 00007ffa`778a3870 阅读全文
posted @ 2022-09-01 12:01 一线码农 阅读(597) 评论(0) 推荐(4) 编辑
摘要: 一:背景 1. 讲故事 前段时间遇到了一个难度比较高的 dump,经过几个小时的探索,终于给找出来了,在这里做一下整理,希望对大家有所帮助,对自己也是一个总结,好了,老规矩,上 WinDBG 说话。 二:WinDbg 分析 1. 为什么会卡死 既然程序卡死,那肯定是被冻住了,所以看下主线程此时在做什 阅读全文
posted @ 2022-08-29 17:28 一线码农 阅读(1567) 评论(3) 推荐(8) 编辑
摘要: 一:背景 本篇是我们系列文章的最后一篇,前面的文章中大多是在 CLR Runtime 以及 OS 层面进行监控来发现各种可疑的程序问题,除了这两个层面,其实我们还可以对 SDK 中一些类进行洞察,比如说: ArrayPool Http Socket Task 更多资料可以看下:https://doc 阅读全文
posted @ 2022-08-28 18:01 一线码农 阅读(913) 评论(0) 推荐(4) 编辑
摘要: 一:背景 去年 GC架构师 Maoni 在 (2021 .NET 开发者大会) [https://ke.segmentfault.com/course/1650000041122988/section/1500000041123017] 上演示过 PerfView 的 Diff 功能来寻找内存增量, 阅读全文
posted @ 2022-08-25 17:50 一线码农 阅读(2211) 评论(0) 推荐(6) 编辑
摘要: 一:背景 C# 程序内存泄漏的诱发因素有很多,但从顶层原理上来说,就是该销毁的 用户根 对象没有被销毁,从而导致内存中意料之外的对象无限堆积,导致内存暴涨,最终崩溃,这其中的一个用户根就是 终结器队列,这一篇我们就来看下如何让 PerfView 配合 WinDbg 双剑合璧。 二:如何洞察 1. 终 阅读全文
posted @ 2022-08-24 10:05 一线码农 阅读(817) 评论(2) 推荐(1) 编辑
摘要: 一:背景 在 内存泄漏 的系列问题中,有一类问题是 内存碎片化 导致的,而且这种更容易发生在 LOH 上,因为它默认不开启 对象压缩,一般遇到这种情况,优先让朋友执行下面的代码应急。 GCSettings.LargeObjectHeapCompactionMode = GCLargeObjectHe 阅读全文
posted @ 2022-08-23 16:35 一线码农 阅读(864) 评论(0) 推荐(2) 编辑
摘要: 一:背景 这篇我们来聊一下 PerfView 在协助 WinDbg 分析 Dump 过程中的两个超实用技巧,可能会帮助我们快速定位最后的问题,主要有如下两块: 洞察内存泄漏中的静态大集合变量名。 验证当前程序的 GC 模式。 这里就把经验分享一下,希望让大家少走弯路。 二:如何洞察 1. 查看静态变 阅读全文
posted @ 2022-08-22 09:10 一线码农 阅读(859) 评论(2) 推荐(4) 编辑
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值,在以前我都是用 WinDBG 来实现,但这玩意需要做一些侵入性操作,实战起来不是那么丝滑,虽然有可 阅读全文
posted @ 2022-08-21 10:32 一线码农 阅读(742) 评论(1) 推荐(3) 编辑
摘要: 一:背景 在洞察 GC 方面,我觉得市面上没有任何一款工具可以和 PerfView 相提并论,这也是为什么我会在 WinDbg 之外还要学习这么一款工具的原因,这篇我们先简单聊聊 PerfView 到底能洞察 GC 什么东西? 二:洞察 GC 1. 到底都能看到 GC 什么? 能获取到的 GC 信息 阅读全文
posted @ 2022-08-17 08:55 一线码农 阅读(794) 评论(0) 推荐(5) 编辑
摘要: 一:背景 前几篇我们聊的都是 非托管内存泄漏,这一篇我们再看下如何用 PerfView 来排查 托管内存泄漏 ,其实 托管内存泄漏 比较好排查,尤其是用 WinDbg,毕竟C#是带有丰富的元数据,不像C++下去就是二进制。 二:如何分析 PerfView 用的是权重占比来寻找可疑的问题函数,为了方便 阅读全文
posted @ 2022-08-16 10:05 一线码农 阅读(1442) 评论(1) 推荐(3) 编辑
摘要: 一:背景 前两篇我们都聊到了非托管内存泄漏,一个是 HeapAlloc ,一个是 VirtualAlloc,除了这两种泄漏之外还存在其他渠道的内存泄漏,比如程序集泄漏,这一篇我们就来聊一聊。 二: 程序集也会泄漏? 在我分析的一百多dump中,程序集方面的泄漏主要有 XmlSerializer 和 阅读全文
posted @ 2022-08-15 11:12 一线码农 阅读(999) 评论(2) 推荐(5) 编辑
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 VirtualAlloc 方法造成的泄漏如何去甄别? 了解 VirtualAlloc 的朋友肯定说, 阅读全文
posted @ 2022-08-14 10:23 一线码农 阅读(933) 评论(3) 推荐(7) 编辑
摘要: 一:背景 上一篇我们聊到了如何去找 热点函数,这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头,其实思路很简单,就是在 HeapAlloc 或者 VirtualAlloc 时做 Hook 拦截,记录它的调用栈以及分配的内存量, PerfView 会将这个 分配量 做成一个 阅读全文
posted @ 2022-08-12 17:09 一线码农 阅读(1148) 评论(1) 推荐(0) 编辑
摘要: 一:背景 准备开个系列来聊一下 PerfView 这款工具,熟悉我的朋友都知道我喜欢用 WinDbg,这东西虽然很牛,但也不是万能的,也有一些场景他解决不了或者很难解决,这时候借助一些其他的工具来辅助,是一个很不错的主意。 很多朋友喜欢在项目中以记录日志的方式来监控项目的流转情况,其实 CoreCL 阅读全文
posted @ 2022-08-11 10:29 一线码农 阅读(1460) 评论(1) 推荐(6) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 40 下一页