上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 46 下一页
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 洞察 GC 的变化,但总感觉还缺了点什么? 对,就是要跟踪到底是什么代码触发了 GC,这对我们分析由于 GC 导致的 CPU 爆高有非常大的参考价值,在以前我都是用 WinDBG 来实现,但这玩意需要做一些侵入性操作,实战起来不是那么丝滑,虽然有可 阅读全文
posted @ 2022-08-21 10:32 一线码农 阅读(980) 评论(1) 推荐(4)
摘要: 一:背景 在洞察 GC 方面,我觉得市面上没有任何一款工具可以和 PerfView 相提并论,这也是为什么我会在 WinDbg 之外还要学习这么一款工具的原因,这篇我们先简单聊聊 PerfView 到底能洞察 GC 什么东西? 二:洞察 GC 1. 到底都能看到 GC 什么? 能获取到的 GC 信息 阅读全文
posted @ 2022-08-17 08:55 一线码农 阅读(1086) 评论(0) 推荐(5)
摘要: 一:背景 前几篇我们聊的都是 非托管内存泄漏,这一篇我们再看下如何用 PerfView 来排查 托管内存泄漏 ,其实 托管内存泄漏 比较好排查,尤其是用 WinDbg,毕竟C#是带有丰富的元数据,不像C++下去就是二进制。 二:如何分析 PerfView 用的是权重占比来寻找可疑的问题函数,为了方便 阅读全文
posted @ 2022-08-16 10:05 一线码农 阅读(2195) 评论(1) 推荐(3)
摘要: 一:背景 前两篇我们都聊到了非托管内存泄漏,一个是 HeapAlloc ,一个是 VirtualAlloc,除了这两种泄漏之外还存在其他渠道的内存泄漏,比如程序集泄漏,这一篇我们就来聊一聊。 二: 程序集也会泄漏? 在我分析的一百多dump中,程序集方面的泄漏主要有 XmlSerializer 和 阅读全文
posted @ 2022-08-15 11:12 一线码农 阅读(1319) 评论(2) 推荐(6)
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 VirtualAlloc 方法造成的泄漏如何去甄别? 了解 VirtualAlloc 的朋友肯定说, 阅读全文
posted @ 2022-08-14 10:23 一线码农 阅读(1333) 评论(3) 推荐(7)
摘要: 一:背景 上一篇我们聊到了如何去找 热点函数,这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头,其实思路很简单,就是在 HeapAlloc 或者 VirtualAlloc 时做 Hook 拦截,记录它的调用栈以及分配的内存量, PerfView 会将这个 分配量 做成一个 阅读全文
posted @ 2022-08-12 17:09 一线码农 阅读(1576) 评论(1) 推荐(0)
摘要: 一:背景 准备开个系列来聊一下 PerfView 这款工具,熟悉我的朋友都知道我喜欢用 WinDbg,这东西虽然很牛,但也不是万能的,也有一些场景他解决不了或者很难解决,这时候借助一些其他的工具来辅助,是一个很不错的主意。 很多朋友喜欢在项目中以记录日志的方式来监控项目的流转情况,其实 CoreCL 阅读全文
posted @ 2022-08-11 10:29 一线码农 阅读(1952) 评论(1) 推荐(6)
摘要: 一:背景 1. 讲故事 前段时间遇到了好几起关于窗体程序的 进程加载锁 引发的 程序卡死 和 线程暴涨 问题,这种 dump 分析难度较大,主要涉及到 Windows操作系统 和 C++ 的基础知识,所以有必要简单整理和大家分享一下,上 windbg 说话。 二:WinDbg 分析 1. 主线程此时 阅读全文
posted @ 2022-08-02 17:11 一线码农 阅读(2991) 评论(0) 推荐(4)
摘要: 一:背景 1. 讲故事 哈哈,再次见到物流类软件,上个月有位朋友找到我,说他的程序出现了 CPU 爆高,让我帮忙看下什么原因,由于那段时间在苦心研究 C++,分析和经验分享也就懈怠了,今天就给大家安排上。 话不多说,上 windbg 说话。 二:WinDbg 分析 1. CPU 真的爆高吗 既然说 阅读全文
posted @ 2022-07-27 15:11 一线码农 阅读(3823) 评论(4) 推荐(27)
摘要: 一: 背景 最近在看 C++ 的右值引用和移动构造函数,感觉这东西一时半会还挺难理解的,可能是没踩过这方面的坑,所以没有那么大的深有体会,不管怎么说,这一篇我试着聊一下。 二: 右值引用 1. 它到底解决了什么问题? 在其他编程语言中,很少听到 右值引用 这个词,我个人感觉还是 C++ 这个 值类型 阅读全文
posted @ 2022-07-25 18:02 一线码农 阅读(804) 评论(1) 推荐(4)
摘要: 一:背景 上一篇我们聊到了C++ 的 auto_ptr ,有朋友说已经在 C++ 17 中被弃用了,感谢朋友提醒,今天我们来聊一下 C++ 11 中引入的几个智能指针。 unique_ptr shared_ptr weak_ptr 看看它们都怎么玩。 二:三大智能指针详解 1. unique_ptr 阅读全文
posted @ 2022-07-24 11:01 一线码农 阅读(708) 评论(0) 推荐(1)
摘要: 一:背景 1. 讲故事 前段时间有位朋友说他的程序 CPU 出现了暴涨现象,由于程序是买来的,所以问题就比较棘手了,那既然找到我,就想办法帮朋友找出来吧,分析下来,问题比较经典,有必要和大家做一下分享。 二:WinDbg 分析 1. CPU 真的爆高吗 一直关注这个系列的朋友应该知道,用 !tp 验 阅读全文
posted @ 2022-07-22 08:45 一线码农 阅读(1702) 评论(4) 推荐(10)
摘要: 一:背景 写这一篇的目的主要是因为.NET领域内几本关于阐述GC方面的书,都是纯理论,所以懂得人自然懂,不懂得人也没法亲自验证,这一篇我就用 windbg + 源码 让大家眼见为实。 二:为什么要引入后台GC 1. 后台GC到底解决了什么问题 解决什么问题得先说有什么问题,我们知道 阻塞版GC 有一 阅读全文
posted @ 2022-07-19 08:32 一线码农 阅读(5993) 评论(2) 推荐(11)
摘要: 一:背景 我们知道 C++ 是手工管理内存的分配和释放,对应的操作符就是 new/delete 和 new[] / delete[], 这给了程序员极大的自由度也给了我们极高的门槛,弄不好就得内存泄露,比如下面的代码: void test() { int* i = new int(10); *i = 阅读全文
posted @ 2022-07-18 09:06 一线码农 阅读(875) 评论(0) 推荐(2)
摘要: 一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main() { void* ptr = malloc(sizeof(int) * 10); int* int_ptr = (int 阅读全文
posted @ 2022-07-15 10:46 一线码农 阅读(1013) 评论(0) 推荐(4)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 46 下一页