Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从长寿命对象的内存中清除大字段_C#_.net_Memory_Garbage Collection_Dispose - Fatal编程技术网

C# 从长寿命对象的内存中清除大字段

C# 从长寿命对象的内存中清除大字段,c#,.net,memory,garbage-collection,dispose,C#,.net,Memory,Garbage Collection,Dispose,.NET3.5,我有一些类可以存储高达1MB的字符串。即使我需要对象很长时间,我也不需要长时间存储字符串 如何在不处理父对象的情况下真正从内存中删除字符串 在这种情况下使用“myString=null”是一种好的做法吗?或者将其封装在私有的dsposable类或其他什么东西中?IDisposable与内存管理无关。将null赋值给私有变量就可以了。看看是否适合你。你考虑过吗?有可能你在程序中的其他地方引用或复制字符串(比如在文本框中?),这样可以使它在内存中保持活动状态。我实际上已经实现了它,但

.NET3.5,我有一些类可以存储高达1MB的字符串。即使我需要对象很长时间,我也不需要长时间存储字符串

如何在不处理父对象的情况下真正从内存中删除字符串


在这种情况下使用“
myString=null
”是一种好的做法吗?或者将其封装在私有的dsposable类或其他什么东西中?

IDisposable
与内存管理无关。将
null
赋值给私有变量就可以了。看看是否适合你。

你考虑过吗?

有可能你在程序中的其他地方引用或复制字符串(比如在文本框中?),这样可以使它在内存中保持活动状态。

我实际上已经实现了它,但不喜欢它将其更改为自定义缓存。老实说,问题是我不太确定内存泄漏在哪里,可能我的字符串内存不足。找不到可以分析复杂应用程序的适当内存探查器。请参阅:。正如文章所说,“避免使用弱引用作为内存管理问题的自动解决方案。相反,开发一个有效的缓存策略来处理应用程序的对象。”@音乐起源这就是我改变设计的原因:)@dr.evil:几年前,我让一位同事经历了一个阶段,他开始在任何地方使用weakreference。我会投票支持将WeakReference从.Net中完全删除。:)我明白了,是的,我实际上很受他们的设计的诱惑,但实际上他们并没有那么酷:我试图找到他们,但到目前为止在那个部门没有运气:)