【发布时间】:2012-02-29 23:43:29
【问题描述】:
我有一个创建节点树的应用程序,然后将它们扔掉并生成新树。
应用程序在启动时分配大约 20 MB。但是我多次尝试加载一个大的节点文件,分配的内存超过了 700 MB。我想我有时会看到垃圾收集器释放内存。
我所在的机器有 12 GB 的 RAM,所以也许只是分配的这么“少量”内存对 GC 来说并不重要。
我找到了很多关于 GC 工作原理的好信息,最好不要告诉它该做什么。但我想验证它是否真的在做任何事情,并且我并没有在代码中做错什么,阻止我的对象被清理。
【问题讨论】:
-
简短回答:需要时。
-
^^^ 是的。实施定义了我的朋友。您应该设计您的应用程序,使其无关紧要。如果您需要确定性内存管理,那么您使用的是错误的语言。
-
@BrianRasmussen 这是乐观的观点。我宁愿说只要它愿意这样做。
-
哇,很多好信息。明天将在工作中回顾所有这些,并为一些答案投票并选择一个。谢谢。
-
您显然相信 RAM 与内存管理有关的谎言。我向你保证不会。将内存视为磁盘空间。 RAM 只是一种特殊的芯片,可以让您的磁盘更快。垃圾收集器不关心你有多少内存;它关心你有多少虚拟空间。 虚拟空间如何映射到物理RAM与垃圾收集器无关;这更多是操作系统的问题。如果您关心内存使用情况了解现代内存管理系统的工作原理。
标签: c# .net garbage-collection