GC是什么时候运行的?它是否像是在一定的时间间隔内运行,或者当应用程序需要内存或什么?GC何时运行?
GC何时运行?
回答
简答:当需要时。
较长的答案:
- 当分配不能兑现
- 当一个AppDomain被卸载
- 当Windows报告内存不足
- 当GC.Collect的叫
此外,定稿可能会在GC后的某个时间点运行。
它是特定于实现的,这意味着即使你知道这些规则,你也不应该在它们周围构建任何东西。它可能在未来发生变化。实际上,我认为管理内存管理的研究很可能不是很长的一段时间。 – 2010-09-24 07:36:21
@Lasse:好点,所以我想这个建议只是坚持简短的答案。 – 2010-09-24 07:38:06
是的,我认为这个答案的必然结果是“,这就是你需要知道的。” – 2010-09-24 09:29:14
从MSFT(见链接查看更多细节):
.NET框架的垃圾回收器 管理您的应用程序分配和 内存释放。每次您创建一个新对象 时,常见的 语言运行时将为托管堆中的对象分配内存。由于地址空间在 托管堆中可用,因此 继续为新的 对象分配空间。但是,内存不是无限的 。垃圾 收集器必须执行收集 为了释放一些内存。垃圾 收集者的优化引擎 根据分配 确定执行收集的最佳时间,其中 正在进行。当垃圾收集器 执行收集时,它会检查 应用程序不再使用的托管堆中的对象 ,并执行必要的 操作以收回其内存以回收其内存。
1. .NET Framework的垃圾收集器管理您的应用程序的内存分配和释放。
- 每次创建对象时,运行时间分配 内存从托管堆中的对象。 3.垃圾回收器必须按 的顺序执行收集以释放一些内存。垃圾收集器的优化 引擎根据所做的分配确定执行收集的最佳时间, 。 4.当垃圾收集器执行收集时,其 将检查托管堆中不再有 被应用程序使用的对象,并执行必要的 操作来收回其内存。
- 1. 优化GC运行时间
- 2. 运行时常量池GC收集
- 3. adobe AIR:阻止GC运行
- 4. 安全运行git gc
- 5. Android GC注意事项 - GC何时运行,并且可以从代码跟踪其运行状态?
- 6. 如何防止git gc在提取时自动运行
- 7. GC正在使用Java长时间运行的计时器
- 8. 完整的GC - Sun JVM运行频率
- 9. 错误而运行git GC --aggressive
- 10. Java GC运行调整影响
- 11. 如果permgen填满,GC会运行吗?
- 12. “git gc”是否也运行“git repack”?
- 13. 什么导致完整的GC运行?
- 14. 运行时单声道人类可读的GC统计信息
- 15. 针对少量和长时间GC运行的JVM调优
- 16. 运行时间太长,对于GC偏斜
- 17. BIRT运行时错误 - java.lang.OutOfMemoryError:超出GC开销限制
- 18. 的Java SoftReference的,panicing GC和GC行为
- 19. 小GC和全GC在同一时间?
- 20. Hotspot的清除GC停止运行,只留下标记扫描GC
- 21. 不能运行git gc ..任何解决方案?
- 22. 如何检测并发GC是否正在运行.Net
- 23. Java CMS GC行为
- 24. Android的GC行为
- 25. GC vs GC SuspendedEE
- 26. Java GC日志行之间有什么区别? (“总共历时......” VS“[GC”)
- 27. NSURLSession何时运行?
- 28. ADT:在库库运行项目时,GC开销达到上限文件夹
- 29. .NET 4.5:.NET运行时的内部错误(80131506)/禁用并发的GC
- 30. 我可以在运行时设置Java GC日志文件(-Xloggc :)吗?
就我所知,有一种确定GC是否即将运行的方法。反正也不容易。 – 2010-09-24 07:29:58
@Matt:您可以注册完整的GC通知。见http://msdn.microsoft.com/en-us/library/system.gc.registerforfullgcnotification.aspx – 2010-09-24 07:44:38
@Brian Rasmussen:谢谢!我不知道那件事。 – 2010-09-24 08:06:18