【发布时间】:2023-11-26 22:31:01
【问题描述】:
我正在尝试测量代码的内存使用情况,但我不知道如何继续。 我不想使用“DotMemory”或任何我需要通过编程来完成的“分析器”。
有什么方法可以知道分配了多少对象? 比如 5 int(4 bytes) + 4 Object (16 bytes) ...
我用过
process.WorkingSet64
但每次我运行相同的代码时,我都会得到不同的值。
那么衡量代码内存使用情况的最佳方法是什么?
【问题讨论】:
-
DotMemory 之类的分析工具要花钱有一个很好的理由,因为收集保留的内存总量不仅仅是计算程序中的任何对象占用空间。还为 .NET self 保留了一些内存,这在工作集中被考虑在内。
-
但是为什么即使我使用 DotMemory 或 CLRprolfiler 运行相同的代码,分配大小也会不同?
-
因为如前所述,WorkingSet 也代表 .NET 本身使用的内存。
-
不一样,因为值还包括系统库,不仅代码部分在工作