我可以测量线程的实际内存使用量吗?

Mar*_*nes 2 memory delphi multithreading

如果是的话,我会在Delphi中给出一个例子.

我已经尝试过使用TMemoryManagerStateGetProcessMemoryInfo

Dav*_*nan 10

线程本身不使用内存.进程拥有线程之间共享的内存.内存可以并且通常在一个线程中分配并在另一个线程中使用.所以你问的问题是不明确的.

也就是说,您当然可以跟踪特定线程的分配和解除分配.您可以安装一个跟踪堆分配的内存管理器,并存储在线程ID索引的字典中分配的字节数.

使用GetMemoryManagerSetMemoryManager将分配计数内存管理器注入运行时.想法是通过调用来记录原始内存管理器GetMemoryManager.然后SetMemoryManager,您可以使用替换注入内存管理器.您的内存管理器跟踪分配,并将实际分配委派给原始内存管理器.


gab*_*abr 9

在Delphi中,使用Delphi的标准内存管理器(FastMM),这是不可能的.FastMM不关心分配哪个线程内存.

其他一些内存管理器可能会提供此功能.