.net - 计数 "new"和 "delete"字节

标签 .net c++ memory-management memory-leaks new-operator

我有一个使用 C++ 项目的 .net 项目,并且占用了大量内存。

我想知道是否有快速简便的方法来计算新分配的流入字节和删除运算符释放的流出字节。添加一些日志记录或其他东西。

这两个运算符的源代码均由 Visual Studio 提供,因此我可以对其进行破解。

问题是我可以看到巨大的虚拟机消耗,我想调查原因。我尝试了几个内存分析器,但它们都不能处理 .NET 应用程序中的非托管 C++ 分配

最佳答案

通常,ValgrnidRational Purify 等内存分析工具可以帮助您分析程序的内存利用率。

如果您仍然想拥有自己的实现,
您可以通过重载来替换全局newdelete运算符,并且在您自己的重载运算符中,您可以维护分配的内存计数。

如果您选择/被迫遵循第二个选项,则需要注意某些方面,您可以阅读此答案中的详细信息 here

如果您使用 STL:
STL 容器类又使用全局new 和delete 运算符进行分配。因此,如果您替换 newdelete 全局运算符,那么 STL 将使用它们而不是 std new 和 delete 运算符。

关于.net - 计数 "new"和 "delete"字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941212/

相关文章:

c# - 检查附加对象是否有任何基于导航属性的相关数据库

.net - 从 .Net Windows 服务打印 tiff 文件

c# - 在 C# 中检查每分钟的时间

c++ - 如何释放 C++ DLL 中分配的内存

c++ - 这是内存泄漏吗?应该怎么做?

c# - 在 C# 中编写静态和非静态方法时如何避免 'call is ambiguous...' 错误?

c++ - 如何声明数组成员变量的getter/setter方法

c++ - 试图理解宏定义

c++ - ShellExecute 不打开默认 Web 浏览器

memory-management - Linux 内核中处理 TLB 未命中的调用图