garbage-collection相关内容
有很多问题上SO就释放COM对象和垃圾回收,但没有我能找到解决这个问题的明确。 在释放COM对象(具体Excel的互操作在这种情况下),按什么顺序我应该释放参考,并调用垃圾收集 在某些地方(如
..
我有我的地方保留日志字符串循环缓冲区的应用程序。当日志已满,对于每一个新的插入,老弦将被释放的垃圾收集,然后他们在第2代内存。因此,最终的一代2 GC会发生,这是我想避免的。 我试图元帅串入一个结构。出人意料的是,我仍然得到第2代GC:秒。看来结构仍保持一定的参考字符串。填写以下控制台应用程序。任何帮助表示赞赏。 使用系统; 使用System.Collections.Generic;
..
我们有一个Windows窗体应用程序包含了数以千计的形式。 许多都是暂时显示为通过ShowDialog的()方法的对话框。 这个应用程序已经问世多年,我们已经发现,许多的形式没有得到垃圾收集及时,由于形式不同的资源泄漏或控制它使用。 这是没有被妥善处理,但可能还有其他类型的资源泄漏尚未被定性GDI +资源特别是,我们发现的例子。 虽然解决这个正确的方法显然是要经过各种形式和
..
我使用的是 FileSystemWatcher的(在ASP.NET Web应用程序)来监视更改的文件。观察者是建立在一个Singleton类的构造函数,例如: 私人SingletonConstructor() { VAR fileToWatch =“{绝对路径文件}”; 变种FSW =新FileSystemWatcher的( Path.GetDirectoryName(fileToW
..
在C#这是更多的内存效率:选项1或选项2 公共无效TestStringBuilder()$ B? $ b { //可能与几百项的集合: 的String [] = outputStrings新的字符串[] {“测试1”,“测试2”,“TEST3”}; //选项#1 StringBuilder的formattedOutput =新的StringBuilder(); 的foreac
..
我们正在使用的EWS托管API,它调查的MS Exchange对于一个给定的时间间隔后新邮件。随着轮询呼叫( PullSubscription.GetEvents())的每次调用 - 微软的API是未能妥善处理的NetworkStream 并导致内存比例增加。这是以前这里讨论过,但从来没有得到解决。 。使用蚂蚁探查我们能够确定哪些对象是在内存中不断发展壮大,找出问题 现在,这个问题已被隔离
..
我需要设置一个上限由单声道使用的内存。 据的博客中有可能使用参数最大堆大小来帽内存使用情况。 根据尝试,并根据代码,它确实是我想要做什么。 但是,此选项的未记录 因此:这是安全的依靠此选项在生产中?(或者它也有缺点,我不看,例如像:不能保证仍然是单声道的未来版本) 解决方案 据记载,这里是得到的文档的一种方法:导出无效 MONO_GC_PARAMS ,开始单: 出
..
我已经写了我的第一个MVVM应用程序。当我关闭应用程序,我经常用的ObjectDisposedException得到一个崩溃的原因。作为应用去世,应用程序窗口消失后立即出现崩溃。 得到一个堆栈跟踪很困难(的看我的其他问题),但最后我做到了,发现我的异常堆栈完全包含C#库(KERNEL32!BaseThreadStart,mscorwks!线程,mscorwks!WKS等)之内。 此外,
..
我很奇怪,为什么创建一个非常简单的数据表,然后将其设置为空后做垃圾收集不清除由数据表所使用的所有内存。下面是一个例子。之前,该变量应该等于删除,但事实并非如此。 { 没过多久= 0,后= 0 ,移除= 0,累计= 0; 之前= GC.GetTotalMemory(真); DataTable的DT = GetSomeDataTableFromSql(); =后,GC.GetTo
..
我目前正在研究使用C ++ / CLI弥合托管的C#和本地,非托管C ++代码之间的差距。我期待解决的一个具体问题是,在C#和C ++不同数据类型的转换。 在阅读起来就采用了这样的桥接方式和所涉及的性能问题,我想知道垃圾收集将如何工作。具体来说,垃圾收集器将如何处理两边创建的,如果他们被引用/摧毁了“彼岸”对象的清理工作。 到目前为止,我已经阅读计算器并的 MSDN ,这使得我相信,垃
..
我目前运行在单声道(Mac OSX版),通过一个非常大的数据文件中读取和汇总后生成汇总统计的程序。 令人不解的,我得到的在程序中的某个点以下错误消息: 垃圾收集器无法分配16384字节的内存主要堆栏目 我希望的一个OOM异常,或者别的东西,我可以一起工作。我曾尝试与正在增加最大堆大小: 出口MONO_GC_PARAMS =最大堆大小=4克 但是,它缠告诉我,我需要将它
..
下面是表现出令人惊讶的定稿行为例子程序: 类的东西 { 公共无效DoSomething的() { Console.WriteLine(“有所作为”); } 〜事() { Console.WriteLine(“被叫终结”); } } 命名空间TestGC { 类节目 { 静态无效的主要(字串[] args) { 变种S =新的东西(); s.DoSometh
..
下面是关于在C#/。NET对象终止和收集一个学术问题。背景阅读是C#语言规范,自动内存管理的第3.9节。 当有一个对象没有明确提及,就可能成为垃圾回收。它成为“符合销毁条件”。在未来的某个时候(例如,如果你强迫垃圾收集),对象的析构函数将被运行。 在析构函数,如果你一个参考保存的对象,该对象将被最终确定,但是将没有资格领取。这可能导致在它已经完成,但没有收集的状态的对象之中。该规范的3
..
我开始使用ReSharper的,这表明当一个方法的可能的进行静态的。将转换几百方法静态方法增加了内存占用过大的时期 解决方案 没有 - ?更改为静态方法对记忆没有影响。 第一次一个类型引用(不论是静态还是非静态),任何静态成员被初始化和静态构造函数中运行。 不过,如果你只是考虑从非静态静态切换方式,这会对垃圾收集或全部的内存占用量没有影响。 您只需要担心内存占用如果您更改
..
我们已经建立了一个侦听文件夹与 FileSystemWatcher的,当我们创建处理文件等窗口服务。但几天之后,事件停止工作。 是否有可能,它被垃圾收集器(GC)收集的? 是否GC收集它持有类(这是一个单)? 我应该使用弱事件? 请我有指事件中的错误被注销? 我怎么想的问题是,FSW有一个内部缓冲区,当它溢出的错误,采取这种一看的文章的报价代码来解决这个问题。结果 希望这有助于
..
这会让垃圾收集任何区别,如果我们在方法范围,而不是在类范围声明一个线程,如: //方案1 公共类Foo { 公共美孚() { 新的Thread(()=> / *引擎* /){的IsBackground =真}。开始(); } } //方案2 公共类酒吧 { 私人只读主题_engineThread = NULL; 公开栏() { _engineThre
..
我工作的XBOX360游戏,使用XNA。在Xbox垃圾收集器进行相当差相比,在PC上的一个,所以保持产生最少垃圾的顺利进行游戏的关键。 我记得读一旦调用一个委托创建垃圾,但现在我的生活找不到代表产生的垃圾的任何引用。难道我只是做这件事还是代表凌乱? 如果代表们的建议变通方法凌乱,奖励积分。 公共委托牛逼的GetValue< T>(吨价,T []参数); 公共静态
..
当我读到在C#中的内存管理的几篇文章,我被释放方法混淆。 有与之相适应的相关这么多复杂的规则。 例如,没有人知道什么时候终结将被调用,他们呼吁即使在构造函数代码抛出,CLR并不能保证所有的终结时调用程序shutdowt等。 有关哪些终结可以在现实生活中使用? 的 只是一个例子,我发现程序GC启动时,它会发出蜂鸣声。 你在代码中使用终结并可能有一些很好的样本? UP
..
我试图在C#和.NET一个游戏,我正打算实施更新在游戏世界中的游戏对象的消息。这些消息是C#的参考对象。 我想这种做法,因为做这种方式会更容易通过网络发送给他们,如果我希望游戏是多人。 但是,如果我有很多的消息,会不会是垃圾收集相当紧张?并不会影响到游戏?消息类本身与4或5人相当少至多。 这些消息将生成一对夫妇每秒钟在游戏世界中的每个对象。 解决方案 在以后的版本GC的,
..
我是否需要设置MyAction为null,使垃圾收集将能够与这两种类别的继续? 我较少关注当这两个类是具有几乎相同的寿命。我的问题是比较合适的,当1级的寿命要长得多则Class2中或当Class2中的寿命要长得多则1级。 下面的代码剥离下来。 。假设两个1级和Class2中包含其他成员和方法,可能会影响其寿命 公共类的Class1:IDisposable的 { 公共动作<
..