多线程内存佔用

C++语言 码拜 9年前 (2016-04-21) 1309次浏览
当本人同时运行一个主线程和多个子线程时,内存佔用迅速升高,想问一下有没有办法可以问到各个线程的内存佔用各是多少呢?
解决方案

10

VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533

5

VMMap   Procmon 等工具

20

Windows开发中一些常用的辅助工具
经常有人问怎么样快速的定位和解决问题,很多时候答案就是借助工具, 记录个人Windows开发中个人常用的一些辅助工具。
(1) Spy++
相信windows开发中应该没人不知道这个工具, 我们常用这个工具查看窗口层次,跟踪窗口消息。
(2) WinSpy
一个窗口相关的小工具,非常有用,可以帮我们快速查看和修改窗口属性。(这个工具是开源的, 拿来学习挺不错的)
(3) Process Explorer
非常有用的工具,相似任务管理器,但是比任务管理器强大的多。 可以让我们查看查看每个进程的详细信息以及进程之间的关系,理解了这个工具你也就理解了整个程序进程.
(4) Process Monitor
看名字就知道是用来监视进程活动的,可以监视目标进程的注册表读写,文件读写, 模块加载和进程线程活动情况等,很多时候我们拿它来观察目标进程的活动情况。
(5) VMMap
完整的内存查看工具,可以用它来分析整个程序内存的详细情况(包括某个堆里面的每个分配的内存块),理解了这个工具你也就理解了整个程序内存布局。
(6) API Monitor
这个工具也是本人强烈推荐的,可以用它来跟踪目标进程的API调用情况,当你怀疑目标程序的某个Feature调用了某几个API,但又没有证据时,可以通过这个工具来验证。该工具甚至还包含一些简单的调试功能,可以通过设置断点在程序调用API时修改参数和返回值。
(6) WinDbg
不多说了,Windows平台上最强大的调试器,上面很多工具的功能都可以通过它来实现,例如VMMap的功能可以通过WinDbg的!address和!heap命令来实现,例如API Monitor的功能可以通过WinDbg的条件断点来实现。

(7) wireshark
网络开发和理解网络协议的必备工具, 通过这个工具我们可以看到整个网络协议栈在每层上数据包的结构, 很多时候我们拿它来分析目标程序的网络协议和实现方式。
(8) httpwatch
集成到浏览器的, http协议的分析利器,  强大的网页数据分析工具, 基本上是Http编程的必备工具。
(9) IDA
反汇编的利器,可以反汇编出函数的流程图以及相互调用关系, 很多时候用它来静态分析程序结构, 然后结合WinDbg进行动态调试。
(10) WindowMonitor
这个程序是个人工作的一个辅助工具,原因是现在工作是做远程桌面共享相关,经常要和窗口打交道,通过这个工具可以监视窗口的行为:
例如焦点的改变,窗口的创建和销毁,窗口的显示和隐藏, 以及窗口的枚举等,现在功能还很简单,需要时再扩充,可以到 这下 下载。
最后总结下,工欲善其事,必先利其器,借助工具可以帮我们更好的理解计算机程序。 另外这些工具使用时也不是完全独立的,很多时候是组合使用, 例如我们先通过Spy++查看窗口的消息处理函数地址,然后通过WinDbg的条件断点让程序收到某个消息时进行拦截和调试。

15

引用:

没本人编写过仅适合本人用的小工具的码农永远当不了村长。

http://download.csdn.net/search?title=&body=&user_name=zhao4zhong1&tag=&categoryid=&source_money=&created_at=&x=76&y=10
多线程内存佔用


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多线程内存佔用
喜欢 (0)
[1034331897@qq.com]
分享 (0)