春暖花开
雪化了,花开了,春天来了
posts - 149,comments - 125,trackbacks - 0
      如何获得单个进程所占内存的大小,也许很简单,通过GetProcessMemoryInfo可以轻松获得,然而那是在PC上。但在windows mobile 上,这个函数不存在,它的实现机制我也不太清楚。所以如何获得一个进程的占用内存大小,则需要另辟蹊径。不过目前,我还没有找到。
       我现在的方法,如下:
    
 1DWORD 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-21 16:40 Sandy 阅读(1078) 评论(0)  编辑 收藏 引用 所属分类: Window Mobile

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理