上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 41 下一页
摘要: 一:背景 上一篇我们聊到了如何用 PerfView 去侦察 NTHeap 的内存泄漏,这种内存泄漏往往是用 C 的 malloc 或者 C++ 的 new 分配而不释放所造成的,这一篇我们来聊一下由 VirtualAlloc 方法造成的泄漏如何去甄别? 了解 VirtualAlloc 的朋友肯定说, 阅读全文
posted @ 2022-08-14 10:23 一线码农 阅读(1048) 评论(3) 推荐(7) 编辑
摘要: 一:背景 上一篇我们聊到了如何去找 热点函数,这一篇我们来看下当你的程序出现了 非托管内存泄漏 时如何去寻找可疑的代码源头,其实思路很简单,就是在 HeapAlloc 或者 VirtualAlloc 时做 Hook 拦截,记录它的调用栈以及分配的内存量, PerfView 会将这个 分配量 做成一个 阅读全文
posted @ 2022-08-12 17:09 一线码农 阅读(1288) 评论(1) 推荐(0) 编辑
摘要: 一:背景 准备开个系列来聊一下 PerfView 这款工具,熟悉我的朋友都知道我喜欢用 WinDbg,这东西虽然很牛,但也不是万能的,也有一些场景他解决不了或者很难解决,这时候借助一些其他的工具来辅助,是一个很不错的主意。 很多朋友喜欢在项目中以记录日志的方式来监控项目的流转情况,其实 CoreCL 阅读全文
posted @ 2022-08-11 10:29 一线码农 阅读(1638) 评论(1) 推荐(6) 编辑
摘要: 一:背景 1. 讲故事 前段时间遇到了好几起关于窗体程序的 进程加载锁 引发的 程序卡死 和 线程暴涨 问题,这种 dump 分析难度较大,主要涉及到 Windows操作系统 和 C++ 的基础知识,所以有必要简单整理和大家分享一下,上 windbg 说话。 二:WinDbg 分析 1. 主线程此时 阅读全文
posted @ 2022-08-02 17:11 一线码农 阅读(2857) 评论(0) 推荐(3) 编辑
摘要: 一:背景 1. 讲故事 哈哈,再次见到物流类软件,上个月有位朋友找到我,说他的程序出现了 CPU 爆高,让我帮忙看下什么原因,由于那段时间在苦心研究 C++,分析和经验分享也就懈怠了,今天就给大家安排上。 话不多说,上 windbg 说话。 二:WinDbg 分析 1. CPU 真的爆高吗 既然说 阅读全文
posted @ 2022-07-27 15:11 一线码农 阅读(3727) 评论(4) 推荐(27) 编辑
摘要: 一: 背景 最近在看 C++ 的右值引用和移动构造函数,感觉这东西一时半会还挺难理解的,可能是没踩过这方面的坑,所以没有那么大的深有体会,不管怎么说,这一篇我试着聊一下。 二: 右值引用 1. 它到底解决了什么问题? 在其他编程语言中,很少听到 右值引用 这个词,我个人感觉还是 C++ 这个 值类型 阅读全文
posted @ 2022-07-25 18:02 一线码农 阅读(754) 评论(1) 推荐(4) 编辑
摘要: 一:背景 上一篇我们聊到了C++ 的 auto_ptr ,有朋友说已经在 C++ 17 中被弃用了,感谢朋友提醒,今天我们来聊一下 C++ 11 中引入的几个智能指针。 unique_ptr shared_ptr weak_ptr 看看它们都怎么玩。 二:三大智能指针详解 1. unique_ptr 阅读全文
posted @ 2022-07-24 11:01 一线码农 阅读(688) 评论(0) 推荐(1) 编辑
摘要: 一:背景 1. 讲故事 前段时间有位朋友说他的程序 CPU 出现了暴涨现象,由于程序是买来的,所以问题就比较棘手了,那既然找到我,就想办法帮朋友找出来吧,分析下来,问题比较经典,有必要和大家做一下分享。 二:WinDbg 分析 1. CPU 真的爆高吗 一直关注这个系列的朋友应该知道,用 !tp 验 阅读全文
posted @ 2022-07-22 08:45 一线码农 阅读(1646) 评论(4) 推荐(10) 编辑
摘要: 一:背景 写这一篇的目的主要是因为.NET领域内几本关于阐述GC方面的书,都是纯理论,所以懂得人自然懂,不懂得人也没法亲自验证,这一篇我就用 windbg + 源码 让大家眼见为实。 二:为什么要引入后台GC 1. 后台GC到底解决了什么问题 解决什么问题得先说有什么问题,我们知道 阻塞版GC 有一 阅读全文
posted @ 2022-07-19 08:32 一线码农 阅读(5906) 评论(2) 推荐(11) 编辑
摘要: 一:背景 我们知道 C++ 是手工管理内存的分配和释放,对应的操作符就是 new/delete 和 new[] / delete[], 这给了程序员极大的自由度也给了我们极高的门槛,弄不好就得内存泄露,比如下面的代码: void test() { int* i = new int(10); *i = 阅读全文
posted @ 2022-07-18 09:06 一线码农 阅读(791) 评论(0) 推荐(2) 编辑
摘要: 一:背景 在玩 C 的时候,经常会用 void* 来指向一段内存地址开端,然后再将其强转成尺度更小的 char* 或 int* 来丈量一段内存,参考如下代码: int main() { void* ptr = malloc(sizeof(int) * 10); int* int_ptr = (int 阅读全文
posted @ 2022-07-15 10:46 一线码农 阅读(965) 评论(0) 推荐(4) 编辑
摘要: 一:背景 1. 讲故事 前段时间有位朋友找到我,说他的程序内存占用比较大,寻求如何解决,截图就不发了,分析下来我感觉除了程序本身的问题之外,.NET5 在内存管理方面做的也不够好,所以有必要给大家分享一下。 二:WinDbg 分析 1. 托管还是非托管泄漏 这个还是老规矩 !address -sum 阅读全文
posted @ 2022-07-14 08:16 一线码农 阅读(4929) 评论(18) 推荐(21) 编辑
摘要: 一:背景 在 C# 中要说类默认给我们定义的特殊成员函数,莫过于 构造函数,但在 C++ 中这样的特殊函数高达 6 种,有必要整合一下聊一聊。 二:特殊成员函数 1. 默认构造函数 和 C# 一样,很多书中都说,如果用户没有定义 构造函数,那么编译器会给我们定义一个,参考下面的例子: class P 阅读全文
posted @ 2022-07-12 09:19 一线码农 阅读(804) 评论(0) 推荐(0) 编辑
摘要: 一:背景 最近发现 C++ 中的类型初始化操作,没有 {} 运算符搞不定的,蛮有意思,今天我们就来逐一列一下各自的用法以及汇编展现,本来想分为 值类型 和 引用类型 两大块,但发现在 C++ 中没这种说法,默认都是 值类型 😂😂😂 二:各种玩法一览 1. int 上的初始化 首先看一下代码: 阅读全文
posted @ 2022-07-11 09:09 一线码农 阅读(2621) 评论(1) 推荐(1) 编辑
摘要: 一:背景 1. 讲故事 前段时间收到一个朋友的求助,说他的程序线程数疯涨,寻求如何解决。 等我分析完之后,我觉得这个问题很有代表性,所以拿出来和大家分享下,还是上老工具 WinDbg。 二: WinDbg 分析 1. 线程真的在疯涨吗 要想查线程有没有疯涨,可以用 !t 命令看一下。 0:000:x 阅读全文
posted @ 2022-07-07 10:47 一线码农 阅读(2041) 评论(9) 推荐(10) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 41 下一页