加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – FastMM:总分配内存

发布时间:2020-12-15 04:14:14 所属栏目:大数据 来源:网络整理
导读:我如何获得由FastMM分配的内存总量? 我试过了: function GetTotalAllocatedMemory: Cardinal;var MMState: TMemoryManagerState;begin GetMemoryManagerState(MMState); Result := MMState.TotalAllocatedMediumBlockSize + MMState.TotalAllocatedLargeBl
我如何获得由FastMM分配的内存总量?

我试过了:

function GetTotalAllocatedMemory: Cardinal;
var
  MMState: TMemoryManagerState;
begin
  GetMemoryManagerState(MMState);
  Result := MMState.TotalAllocatedMediumBlockSize + MMState.TotalAllocatedLargeBlockSize;
end;

这是对的吗?

无论如何它会返回奇怪的东西.它比我在Windows任务管理器中看到的值少5倍.我相信Delphi应用程序分配的内存量等于FastMM分配的内存加上一些系统开销.我错了吗?

解决方法

用这个:
//------------------------------------------------------------------------------  
// CsiGetApplicationMemory  
//  
// Returns the amount of memory used by the application (does not include  
// reserved memory)  
//------------------------------------------------------------------------------  
function CsiGetApplicationMemory: Int64;  
var  
  lMemoryState: TMemoryManagerState;  
  lIndex: Integer;  
begin  
  Result := 0;  

  // get the state  
  GetMemoryManagerState(lMemoryState);  

  with lMemoryState do begin  
    // small blocks  
    for lIndex := Low(SmallBlockTypeStates) to High(SmallBlockTypeStates) do  
      Inc(Result,SmallBlockTypeStates[lIndex].AllocatedBlockCount *  
          SmallBlockTypeStates[lIndex].UseableBlockSize);  

    // medium blocks  
    Inc(Result,TotalAllocatedMediumBlockSize);  

    // large blocks  
    Inc(Result,TotalAllocatedLargeBlockSize);  
  end;  
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读