春暖花开
雪化了,花开了,春天来了
C++博客
首页
新随笔
新文章
联系
聚合
管理
posts - 149,comments - 125,trackbacks - 0
<
2008年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(9)
给我留言
查看公开留言
查看私人留言
随笔分类
(144)
C#学习
c++学习(24)
Windows Mobile(32)
windows学习(42)
测试学习
多语言学习(1)
面试总结(6)
日常总结(11)
设计模式(2)
生活之乐(20)
网络学习(5)
我思我想(1)
随笔档案
(149)
2010年11月 (1)
2009年12月 (1)
2009年10月 (5)
2009年9月 (6)
2009年8月 (10)
2009年7月 (27)
2009年6月 (22)
2009年5月 (6)
2009年4月 (12)
2009年3月 (11)
2009年2月 (10)
2009年1月 (5)
2008年12月 (17)
2008年11月 (9)
2008年10月 (4)
2008年7月 (2)
2008年5月 (1)
文章分类
(54)
C++(19)
CLR via C#(1)
UML学习(1)
Window Mobile(9)
春之心情(8)
界面控件学习(2)
算法学习(2)
杂项学习(12)
文章档案
(54)
2011年10月 (1)
2009年7月 (4)
2009年6月 (1)
2009年5月 (1)
2009年4月 (6)
2009年3月 (1)
2009年2月 (1)
2008年12月 (6)
2008年11月 (11)
2008年10月 (14)
2008年8月 (1)
2008年7月 (6)
2008年5月 (1)
技术博客
蚂蚁终结者
蚂蚁终结者
Sleeping
woaidongmao
λ-calculus in C++Blogs
编程小区
李先静的专栏
那谁的技术博客
万连文
小P成长记_透过C++看人生
有意思的排序动画
周星星
搜索
积分与排名
积分 - 319882
排名 - 76
最新评论
1. re: vs 后缀名总结
评论内容较长,点击标题查看
--best resume writers
2. re: MoveFile、CopyFile和DeleteAndRenameFile[未登录]
其实可以试试SHFileOperation这个API。
--riverqh
3. re: 如何在方框里打对勾
太牛X了
--落雪
4. re: MoveFile、CopyFile和DeleteAndRenameFile
评论内容较长,点击标题查看
--1111
5. re: 文件操作:CreateFile和WriteFile的学习
评论内容较长,点击标题查看
--小松鼠
阅读排行榜
1. 文件操作:CreateFile和WriteFile的学习(52669)
2. SHELLEXECUTEINFO 和 ShellExecuteEx的使用(35384)
3. 回调函数和函数指针(13192)
4. 转: C++ pair用法(12005)
5. 转: IMSI前5位对应移动运营商名称的列表(8041)
评论排行榜
1. 文件操作:CreateFile和WriteFile的学习(13)
2. Windows Mobile 发送短信的问题(13)
3. LoadString的一些小用法(8)
4. 回调函数和函数指针(7)
5. 关于debug和release的一点疑惑(7)
单个进程所占内存的疑惑
如何获得单个进程所占内存的大小,也许很简单,通过GetProcessMemoryInfo可以轻松获得,然而那是在PC上。但在windows mobile 上,这个函数不存在,它的实现机制我也不太清楚。所以如何获得一个进程的占用内存大小,则需要另辟蹊径。不过目前,我还没有找到。
我现在的方法,如下:
1
DWORD GetUsedMemory(DWORD pID)
2
{
3
DWORD memUsage
=
0
;
4
HANDLE hSnapShot
=
CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, pID);
5
if
(INVALID_HANDLE_VALUE
!=
hSnapShot)
6
{
7
HEAPLIST32 heapList;
8
heapList.dwSize
=
sizeof
(HEAPLIST32);
9
BOOL bOk
=
Heap32ListFirst(hSnapShot,
&
heapList);
10
for
(; bOk; bOk
=
Heap32ListNext(hSnapShot,
&
heapList))
11
{
12
HEAPENTRY32 he;
13
he.dwSize
=
sizeof
(HEAPENTRY32);
14
BOOL fOK
=
Heap32First(hSnapShot,
&
he, pID, heapList.th32HeapID);
15
for
(; fOK; fOK
=
Heap32Next(hSnapShot,
&
he))
16
{
17
memUsage
+=
he.dwBlockSize;
18
}
19
}
20
21
22
23
//
关闭快照句柄
24
CloseToolhelp32Snapshot(hSnapShot);
25
}
26
27
return
memUsage;
28
29
}
以上的这个方法与实际有出入。
有没有更好的办法呢?希望研究过的和正在研究的人,或者感兴趣的人,能够指点一二,让我能够走出困惑。
posted on 2008-07-29 16:21
Sandy
阅读(1146)
评论(4)
编辑
收藏
引用
FeedBack:
#
re: 单个进程所占内存的疑惑
2008-07-30 08:35 |
aGAric
除了堆,程序还要占用其他一些内存,比如数据区,代码区,还要和其他程序一起共享一些dll的东西,此外还有栈内存。
回复
更多评论
#
re: 单个进程所占内存的疑惑[未登录]
2008-07-30 09:04 |
raof01
还有各种资源比如打开的文件,进程描述符,线程描述符等等。
回复
更多评论
#
re: 单个进程所占内存的疑惑
2008-07-30 12:46 |
qiyanhd
这个我也明白,有没有什么办法可以获得进程的这些信息呢?
回复
更多评论
#
re: 单个进程所占内存的疑惑
2008-07-31 18:27 |
Kroc
我也正在研究,但是应该是可以做的,FdcSoft的任务管理器中计算的就和Windows Mobile6.1自带的差不多。
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理