我有一个使用 C++ 项目的 .net 项目,并且占用了大量内存。
我想知道是否有快速简便的方法来计算新分配的流入字节和删除运算符释放的流出字节。添加一些日志记录或其他东西。
这两个运算符的源代码均由 Visual Studio 提供,因此我可以对其进行破解。
问题是我可以看到巨大的虚拟机消耗,我想调查原因。我尝试了几个内存分析器,但它们都不能处理 .NET 应用程序中的非托管 C++ 分配
最佳答案
通常,Valgrnid 或 Rational Purify 等内存分析工具可以帮助您分析程序的内存利用率。
如果您仍然想拥有自己的实现,
您可以通过重载来替换全局new
和delete
运算符,并且在您自己的重载运算符中,您可以维护分配的内存计数。
如果您选择/被迫遵循第二个选项,则需要注意某些方面,您可以阅读此答案中的详细信息 here 。
如果您使用 STL:
STL 容器类又使用全局new 和delete 运算符进行分配。因此,如果您替换 new
和 delete
全局运算符,那么 STL 将使用它们而不是 std new 和 delete 运算符。
关于.net - 计数 "new"和 "delete"字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941212/