相关疑难解决方法(0)

在c#中以字节为单位查找对象实例的大小

对于任何任意实例(不同对象,组合,单个对象等的集合)

如何确定其大小(以字节为单位)?

(我现在有各种对象的集合,我正在尝试确定它的聚合大小)

编辑:有人写了一个可以做到这一点的对象的扩展方法吗?那个非常整洁的imo.

c#

101
推荐指数
7
解决办法
9万
查看次数

找出C#中对象使用了多少内存?

有没有人知道找出一个对象实例占用多少内存的方法?

例如,如果我有以下对象的实例:

TestClass tc = new TestClass();
Run Code Online (Sandbox Code Playgroud)

有没有办法找出实例tc要占用多少内存?

之所以要求是,尽管C#有内置的内存管理,我经常碰到的问题有没有清除的对象的实例(例如,保持的东西轨道列表).

有几个相当不错的内存分析器(如蚂蚁探查),但在多线程环境中是非常难以找出所属的地方,即使有这些工具.

c# memory performance profiler

13
推荐指数
2
解决办法
1万
查看次数

如何测量单个对象在.NET中占用的内存量

我不知道是否有在C#/.NET和/或Visual Studio一个简单的命令或指令:能告诉我有多少内存的单个对象是占用了?我有一个鬼鬼祟祟的怀疑,的sizeof()运算符是要骗我...我在这个信念是否合理?

有一个有点相关的问题在这里,但没有明确的答案是如何衡量的单个对象给出

.net c# profiling memory-management

9
推荐指数
1
解决办法
4859
查看次数

以编程方式查找对象使用的内存

有没有办法以编程方式准确地确定c#中对象使用的内存量?我不关心这个过程有多慢,所以左右运行GC是可以接受的(当然我更喜欢更高效的东西).

  • 序列化对象并查看结果长度似乎不太准确(在这个方法的简单测试中,我看到一个整数返回值为54).

  • 使用GC.GetTotalMemory(true)似乎产生不一致的值,更不用说它们看起来太大了.

  • 使用Marshal.SizeOf(object)产生准确的结果,但似乎只适用于基元.

如果这些行中没有任何内容可用,则可以选择根据所使用的结构和所涉及的原语来计算大小.这也是可以接受的(虽然令人不安),但我需要知道计算对象开销等的正确方法.任何能够向我展示这种方法的文献都会很棒.

类似的SO问题(其中没有一个似乎具有准确计算对象大小的具体方法):

C#/ .NET对象使用多少内存?

如何在C#中获取或使用内存

如何在内存中获取对象大小?

sizeof()等价于引用类型?

配置内存的工具(非程序化方法):

http://www.microsoft.com/en-us/download/details.aspx?id=16273

找出C#中对象使用了多少内存?

c# memory profiling

8
推荐指数
1
解决办法
7983
查看次数

记录对象的内存使用情况

可能有5或6个SO帖子切向触及这个,但没有一个真正回答这个问题.

我有一个Dictionary对象,我使用一种缓存来存储值.问题是我不知道它有多大 - 随着时间的推移它可能会变得越来越大,但我无法分辨,所以我无法衡量它的有效性,或者对用户如何使用该软件做出结论.因为这是一个将在很长一段时间内投入生产并监控某些东西的部分,所以连接内存分析器或任何类似的调试都没有意义.

理想情况下,我只需在我的Timer中调用一个类似于:

private void someTimer_Tick(object sender, EventArgs e)
{
   ...
   float mbMem = cacheMap.GetMemorySize();
   RecordInLog(DateTime.Now.ToString() + ": mbMem is using " + mbMem.ToString() + "MB of memory");
   ...
}
Run Code Online (Sandbox Code Playgroud)

这可以在不附加某些调试工具的情况下完成,以便可以使用部署方案吗?

.net c# memory

5
推荐指数
1
解决办法
268
查看次数

内存中对象的大小

可能重复:
如何在内存中获取对象大小?

是否有可能在运行时知道对象占用的内存?怎么样?具体来说,我想知道占用的RAM量.

.net c#

4
推荐指数
1
解决办法
3万
查看次数

测量.NET对象的大小

我正在用.NET 4.0 C#编写一个应用程序.我将对象放在.net httpruntime缓存中,并希望在其上生成一些统计信息.我想知道对象在放入缓存之前的大小以及它在缓存中的大小.我该怎么测量呢?它是否在放入缓存时被序列化,如果是,那么使用什么类型的序列化?

c# asp.net caching .net-4.0

2
推荐指数
1
解决办法
4687
查看次数