【发布时间】:2019-12-21 05:27:11
【问题描述】:
如何获得在 linux (Ubuntu 18.04) 上运行 .net core (3.1) 的性能计数器“Large Object Heap Size”?
【问题讨论】:
-
ParisRoubaix 我已经编辑了下面的答案
标签: c# asp.net-core
如何获得在 linux (Ubuntu 18.04) 上运行 .net core (3.1) 的性能计数器“Large Object Heap Size”?
【问题讨论】:
标签: c# asp.net-core
什么是LOH:
.NET 垃圾收集器 (GC) 将对象分成小块和 大物体。当一个对象很大(>=85,000 字节)时,它是 被认为是一个大对象,比如将它复制到其他地方的内存中 在堆上——可能很昂贵。因此,.NET 垃圾 收集器将大对象放置在大对象堆 (LOH) 上。
可用于 .NET Core 应用的几种方法
对于 Windows 特定:
转到性能监视器 > AddCounter > .NET CLR 内存 > 大对象堆大小 > 选择应用程序名称
dotnet 计数器:
dotnet-counters 是 .NET Core 应用的性能监控工具
示例用法:
dotnet tool install --global dotnet-counters
dotnet-counters monitor --process-id 1902 System.Runtime
https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-counters-instructions.md
dotnet 转储:
dotnet-dump CLI 全局工具是收集和分析的方式 Windows 和 Linux 全部转储,不涉及任何本机调试器 像 Linux 上的 lldb
$ dotnet tool install -g dotnet-dump
$ dotnet-dump collect --process-id 1902
$ dotnet-dump analyze ./core_20190226_135850
https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-dump-instructions.md
dotnet 跟踪:
dotnet-trace 工具是一个跨平台的 CLI 全局工具,可以在不涉及任何本机分析器的情况下收集正在运行的进程的 .NET Core 跟踪
$ dotnet tool install --global dotnet-trace
dotnet-trace collect --process-id <PID> --providers Microsoft-Windows-DotNETRuntime
https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-trace-instructions.md
如何让性能计数器“Large Object Heap Size”运行 Linux 上的 .net 核心 (3.1)
其他参考:
【讨论】:
dotnet-counters 的编辑似乎回答了这个问题。