【发布时间】:2016-08-24 07:19:43
【问题描述】:
我正在使用 Windows 移动应用程序,运行紧凑框架 2 和 vb.net 代码。由于需要在每个确定的时间段同步应用程序,我使用 system.threading.timer 为每个同步过程设置预定义的计时器。
问题是,我的内存正在快速构建,迅速达到 24 MB,并且由于 OutOfMemoryException 而导致应用崩溃。
我知道紧凑框架的 GC 充其量并不好,只有 2MB 的 gc 堆,我每次同步使用 4 MB,而 gc 只清理 2MB,因为它的功能。
我尝试使用在紧凑框架 2.0 中构建的性能监视器工具,但它只为我提供了“仍然存在”的对象,并且没有清理或处置,而对每个部分发生的事情没有真正的概念应用程序。
紧凑型框架 2.0 中是否有任何有效的监控内存泄漏的方法? 一个将指导我通过哪种方法导致问题或代码的哪一部分有问题?
或者以另一种方式,任何有用的方法来管理我的内存,比方说,更有效的方式,因为我只有 32MB 的可用内存空间,这是一个非常狭窄的问题。
【问题讨论】:
-
从我的角度来看,内存泄漏是指您分配一个对象并且在使用后没有释放(Dispose 并设置为 Null)它。我会在每个可疑函数之前和之后转储内存状态。之后进入不释放内存的函数并查找未释放的对象。请记住,只要进程中存在对该对象的引用,该对象就不会自动释放。
-
查看Compact Framework Power Toys 中可用的 NETCF CLR Profiler,它将显示每个对象的创建数量以及创建对象的方法。
标签: vb.net memory-leaks out-of-memory compact-framework