在没有 Windows 的非常短暂的应用程序中调试内存使用情况

Posted

技术标签:

【中文标题】在没有 Windows 的非常短暂的应用程序中调试内存使用情况【英文标题】:Debugging memory usage in a very short lived application without Windows 【发布时间】:2021-04-15 10:11:11 【问题描述】:

我有一个运行时间少于 500 毫秒的控制台应用程序,但根据 BenchmarkDotNet 分配的内存超过 100 MB。

我试图弄清楚那些 100Mb 是什么,因为它没有加起来。但是我在 Linux 或 Mac 中找不到这样做的工具。一旦应用程序调用的方法结束,GC 就可以毫无问题地清理所有内存,所以这不是我在转储中看到的泄漏,除非我在退出方法之前的非常准确的时刻进行转储。我不清楚算法在内存使用中达到峰值的时刻。

我可以使用 dotnet-trace 获取 CPU 跟踪,并使用 Speedscope 在浏览器中显示它,但是当使用 gc-verbosegc-collect 作为提供者时,我无法在 Speedscope 中显示跟踪。

dotnet-trace 有没有办法在控制台中打印所创建对象的统计信息或类似的东西?

【问题讨论】:

michaelscodingspot.com/dotnet-trace 【参考方案1】:

试用 dotnet dump 并查看Tess Ferrandez 的这篇文章。

也许您可以分享更多信息。

【讨论】:

这就是我说我不能做的事情:D

以上是关于在没有 Windows 的非常短暂的应用程序中调试内存使用情况的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用睡眠的情况下在 C# 中执行短暂的延迟?

如果 Windows 服务由 Visual Studio 安装程序安装,则无法调试它

c++ Windows 调试性能与 linux 相比非常慢

如何从 Windows 调试离子视图中的应用程序?

创建 Windows 自动重启 + 每次重启时递增的计数器

如何调试其他线程上的异常?