我正在检查我的服务的内存使用情况,并发现私人字节随着时间增加。该服务会创建所需的新组件,并且只有在服务停止时才会处理。所以我正在寻找在存在服务调用时创建新组件的代码,并在不需要时尝试处理它们。我正在使用PerfMon来检查专用字节。结构和垃圾收集
那么我在正确的轨道上呢?
此外,我发现该方法的一个每次创建新的结构,然后它不被处置或分配给null。
var structInfo = new MyStruct();
structInfo .StructSize = Marshal.SizeOf(structInfo);
MyClass info = this.BuildStructInfo(structInfo);
return info;
编辑:
该方法返回其自结构获取其值的类。
我是否需要处置structInfo
,如果我什么都不做,它会被GC收集吗?
分配内存很贵。 CLR将会保留系统给它的尽可能多的内存。除非你遇到OOM异常,否则不要担心。 – Will 2012-08-06 12:47:42
根据你我需要看看其他代码,而不是担心这个? – 2012-08-06 12:53:47
Knuth认为,过早优化是万恶之源。你有没有记忆问题,“嘿,偶然我看了我的应用程序的内存使用情况,它不应该这么高”?如果不是,那么就放弃它。 – Will 2012-08-06 13:06:28