c# - 如何判断MemoryCache类消耗了多少内存?

标签 c# caching memorycache

我们的产品基于内存中对象数据集,该数据集保存在 MemoryCache 中。对象。

我想知道缓存中存储的数据消耗了多少内存。

因为我们可能在同一台计算机上运行该产品的多个实例 (每个都在自己的应用程序域内),立即了解谁消耗了什么内容非常重要......

该类具有以下属性:CacheMemoryLimit 和 PhysicalMemoryLimit,但没有属性可以让我知道消耗了多少内存?

提前致谢!

最佳答案

检查内存的最佳方法是使用 WinDbg + SOS/Psscor。特别是,this article Tess 将为您提供一个脚本来自动检查 MemoryCache。

但是,如果您不熟悉这些工具和 .net 内部结构,通常需要花费几个小时来设置环境并了解其工作原理。

另一种方法是使用调试工具2.0,可用 here 。您只需创建工作进程的内存转储(任务管理器/右键单击/创建转储文件)并选择内存分析。该报告包含进程中的 Web 缓存大小部分。

如果你想进行实时内存检查,你可以使用 ClrMD来自.net 团队。有介绍here .

关于c# - 如何判断MemoryCache类消耗了多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19708946/

相关文章:

c# - 在 asp.net mvc 应用程序中使用 memorycache 每次都会创建它

c# - 方法的并行访问

mysql - 从 CakePHP 2.x 中完全删除查询缓存

缓存所有方法的结果

c# - 如何使用 MemoryCache 处理成本高昂的构建操作?

c# - 为 MemoryCache(或任何缓存)实现通用 Get<T>

c# - 将所有者设置为来自另一个流程表单的表单

javascript 无法读取 null 的属性 'style'

c# - 在 Caliburn Micro 和 CaSTLe Windsor 中处理 ViewModel

java - DataNucleus 和缓存协调