garbage-collection相关内容

在什么情况下,我们需要调用GC.Collect两次

我们有一个WPF应用程序的基础上,团结MMVVVM格局。在应用程序生命周期可以有几个项目的生命周期,每一个项目的生命周期之后,我们做了人工拆除,并尝试释放的ViewModels的所有参考。对于事件的订阅与统一,我们使用的是弱引用。因此,我们假设推倒之后,我们可以称之为GC收集,使所有的垃圾对象是垃圾收集。我们有手动取消订阅的所有事件的另一种选择,但我们是preferring垃圾收集,因为它会清除2 ..
发布时间:2015-11-24 14:59:38 C#/.NET

我们是否应该使用"工作站"垃圾收集或QUOT;服务器"垃圾收集?

我运行一个多核心的4路服务器上的大量多线程C#应用程序。目前我们使用的是“服务器模式”垃圾回收。然而测试表明,工作站模式GC更快。 MSDN说: 管理$使用该服务器API C $ C应用程序使用的服务器优化的垃圾收集器(GC)而不是默认的工作站GC收到显著的好处。 工作站是默认的GC模式和可用单处理器计算机唯一的一个。工作站GC托管在控制台和Windows窗体应用程序。它执行完整(第2代 ..
发布时间:2015-11-24 14:56:23 C#/.NET

我可以(而且我曾经想)设置在.net中的最大堆大小?

我来自一个Java背景,我习惯说的是什么JVM的最大堆大小应该的事情之一。如果正在运行的程序试图吞下多是允许的,而垃圾收集器无法释放更多的资源,那么OutOfMemoryError异常被抛出,这一切都一声巨响。因此,设置最大堆大小是很重要的Java语言。 这是否适用于.NET?你能设置堆大小限制?是否CLR只是不停,直到达到机器的物理极限扩大其堆?或者是不是在.net中的一些微妙的原因,一个问题 ..
发布时间:2015-11-24 14:54:47 C#/.NET

在.NET 4.0中非常高的内存使用情况

我有一个C#Windows服务,我最近从.NET 3.5到.NET 4.0感动。没有其他的code进行了更改。 在3.5上运行时,对于一个给定的工作负载的内存utilzation是大约1.5 GB的内存和吞吐量是每秒20倍。 (在X无所谓这个问题的情况下。) 在4.0上运行完全相同的服务3GB和5GB +之间所使用的内存,并得到小于每秒4×。事实上,该服务通常会最终拖延了内存使用量继续攀升,直 ..
发布时间:2015-11-24 14:53:59 C#/.NET

在.NET弱的事件?

如果对象A侦听到的对象B的事件,对象B将继续反对为生。 有没有一个标准的实施,将prevent这种弱的事件? 我知道WPF有一定的机制,但我期待的东西不依赖于WPF。 我猜的解决方案应该使用弱引用的地方。 解决方案 达斯汀·坎贝尔从DidItWith.NET博客探讨一些失败的尝试创建弱的事件处理程序,然后继续表现出有效的工作,轻量级实现: 解决问题的弱事件处理程序。 在理想情况下,虽然,微软 ..
发布时间:2015-11-24 14:49:35 C#/.NET

为什么大对象堆和何必计较?

我看了一下世代和大对象堆。但我还是不明白有大对象堆有何意义(或利益)? 什么可能出了问题(在性能和内存方面)如果CLR会不过是仗着第2代(考虑到门槛Gen0和第一代小,以处理大对象)来存储大对象? 解决方案 一个没有垃圾收集刚刚摆脱未被引用的对象,它也的契约的堆。这是一个非常重要的优化。它不只是让内存的使用更有效率的(未使用的孔),它使CPU高速缓存更有效。缓存是现代处理器的真正的大交易,他 ..
发布时间:2015-11-24 14:47:36 C#/.NET

什么prevents被收集在C#中的主题?

在.NET中,在此之后code,什么机制被垃圾收集站Thread对象? 新的Thread(美孚)。开始(); 所以GC.Collect(); 是的,它是安全的假设的东西有一个参考线,我只是徘徊究竟是什么。出于某种原因,反射器不显示我的System.Threading,所以我不能把它挖出来自己(我知道MS发布了源$ C ​​$ C对于.NET框架,我只是没有它方便)。 解决方案 运行时 ..
发布时间:2015-11-24 14:42:12 C#/.NET

实现了IDisposable正确

在我的班级我实现IDisposable如下: 公共类用户:IDisposable的 { 公众诠释ID {获得;保护套; } 公共字符串名称{;保护套; } 公共字符串传递{获得;保护套; } 公众用户(INT用户名) { ID =用户名; } 公众用户(用户名字符串,字符串密码) { NAME =用 ..
发布时间:2015-11-24 14:32:48 C#/.NET

什么时候应该使用GC.Sup pressFinalize()?

在.NET中,在哪些情况下我应该使用 GC.Sup pressFinalize()? 什么优势(S)不使用这种方法给我吗? 解决方案 燮pressFinalize只能由具有终结一类调用。它的通知垃圾收集器(GC)的这对象清理全面。 建议IDisposable模式,当你有一个终结是: 公共类MyClass的:IDisposable的 { 私人布尔处置= FALSE; 受保 ..
发布时间:2015-11-24 14:25:33 C#/.NET

有没有垃圾回收器调用Dispose()?

我认为,GC将调用Dispose最终,如果你的程序没有,但是,你应该在你的程序调用Dispose()只是为了清理确定性。 不过,从我的小测试程序,我没有看到Dispose已获取调用所有.... 公共类测试:IDisposable的 { 静态无效的主要(字串[] args) { 测试S =新的测试(); S = NULL; 所以GC ..
发布时间:2015-11-24 14:19:04 C#/.NET

所以GC.Collect()

好吧,我读过一对夫妇关于它的话题,但在这里不言而喻。让我们想象一下我有一个应用程序,基本上每一个现在,然后我会点击一个按钮,很多事情会发生几分钟,然后它会赋闲可能一个小时,或者只是1分钟。难道只是整个结束后的良好局面,以调用GC.Collect?我的意思是,我不知道,就在那一刻,我不会被使用我的应用程序,和GC不能猜测它。 解决方案 我可以看到,几个人都走了极端有关不推荐给调用GC.Colle ..
发布时间:2015-11-24 13:54:54 C#/.NET

在C#中的内存泄漏

有没有可能在一个管理的系统出现内存泄漏,当你确保所有手柄,实现东西 IDispose 设置? 会不会有,其中某些变量被排除在外的情况下? 解决方案 事件处理程序的非显而易见的内存泄漏很常见的来源。如果从Object2的订阅事件的object1,然后做object2.Dispose()和pretend不存在(和辍学从code的所有引用),还有在object1的活动的隐式引用将prevent O ..
发布时间:2015-11-24 11:45:30 C#/.NET

什么是根?

什么是垃圾回收的根源是什么? 我已读根作为和活的定义是“您程序可以访问的任何参考”的定义中的对象正在使用,它可以是一个局部变量,静态变量 我为小有区别的根和活动对象之间的区别感到困惑。 什么是路径为根?如何根和活动对象的工作? 有人能详细点吗? 解决方案 如果你想在内存中的对象为一棵树,在“根”将成为根节点 - 每一个对象立即程序访问 者P =新的Person(); p.car =新 ..
发布时间:2015-11-24 11:34:26 Java开发

了解.NET对象的大小

我想找出我的对象有多少内存需要,看看有多少人是在大对象堆中(这是什么,超过85,000个字节)。 是不是简单的添加4类型为int,8很长,4(或8,如果你在64位)任何引用类型等每个对象,还是有过顶球的方法,属性等。 解决方案 不要忘了一个实际对象的大小并不包括它引用的对象的大小。 这很可能最终在大对象堆的唯一事情是数组和字符串 - 其他对象往往是相对小的自己。即使一个对象(比如说)10引 ..
发布时间:2015-11-24 11:34:08 C#/.NET

哪里是machine.config中?

我想申请一个变化,这样我可以用我的C#3.5的应用程序服务器GC设置 - 我可以做到这一点通过编辑 machine.config的文件 唯一的问题是我不知道那是。 如何才能找到这个文件的可重复的方式在多个不同的机器上的路径 解决方案 32位 %WINDIR%\ Microsoft.NET \框架\ [版本] \ CONFIG \ machine.config中 64位 % ..
发布时间:2015-11-24 11:27:52 C#/.NET

什么时候可以接受的调用GC.Collect?

一般的建议是,你不应该从你的code调用 GC.Collect的,但什么是例外情况? 我只能想一些非常特殊的情况下,它可能是有意义的强制垃圾回收。 的一个例子是弹簧想到是一种服务,该唤醒间隔,执行某些任务,然后睡了很长时间。在这种情况下,它可能是一个好主意,强制收集到prevent即将要被闲置的过程,从持有上比需要更多的内存。 还有没有其他的情况下是可以接受调用 GC.Collect的? ..
发布时间:2015-11-24 11:21:06 C#/.NET

强制垃圾收集在C#中的最佳实践

在我的经验看来,大多数人会告诉你,这是不明智的强制垃圾回收,但在某些情况下,你正在处理并不总能收集到0代,但在那里的内存是一个大对象的问题,是它确定强制收取?是否有一个最佳实践在那里这样做? 解决方案 最好的做法是不强制进行垃圾回收。 根据MSDN: “这是可以强制垃圾 收集致电收集,但 大部分时间,这应该是 避免,因为它可能会产生 性能问题。 “ 不过,如果你能可靠地测试您的cod ..
发布时间:2015-11-24 11:19:00 C#/.NET