首页 文章

如何衡量代码或进程的累计内存使用情况?

提问于
浏览
0

我正在尝试使用Process.privateBytes和Process.workingSet来测量代码和进程的内存使用情况但是如果我运行应用程序几次,每次我有不同的值?

每次都有相同值的准确方法是什么?

3 回答

  • 1

    Process.privateBytes是一个 Approximation ,除非有问题的代码和进程中只有一个Thread.Sleep(),它产生的所有线程,值必然会发生变化(取决于内存消耗GC)

    Also refer What is private bytes, virtual bytes, working set?

  • 1

    如果您需要从代码中测量内存使用量(正如您在评论中提到的那样),请使用JetBrains dotMemory Unit框架(它完全针对此类任务设计了's free), it') .

    var snapshot1 = dotMemoryApi.GetSnapshot();
    foo.Bar(); // run your code
    var allocatedSize = dotMemoryApi.GetDifference(snapshot1).GetNewObjects().SizeInBytes;
    

    它可以轻松地与单元测试一起使用,也可以用于任何应用 . 当前的EAP版本包含用于此目的的独立启动器 . 问我是否需要该框架的帮助 .

    有以前版本的在线文档https://www.jetbrains.com/dotmemory/unit/help/Introduction.html

  • 0

    为了准确测量内存消耗,您可以使用专业的 memory profiler . 然而,最好的,如JetBrains dotMemory和Redgate ANTS不是免费的 .

相关问题