我正在使用Windows移动应用程序,运行紧凑框架2和vb.net代码。需要在每个确定的时间段内同步应用程序,我使用system.threading.timer为每个同步过程设置预定义的计时器。
问题是一个问题,我的记忆正在迅速建立,迅速达到24 MB,应用程序由于OutOfMemoryException而崩溃。
据我所知,紧凑型框架的GC效果不佳,并且只有2MB的gc堆,我使用4 MB的每个同步,而gc只清理2MB,因为它的功能。
我尝试在紧凑框架2.0中使用构建的性能监视器工具,但它只为我提供了“仍然活着”的对象,并且没有清理或处理,并且没有关于每个部分中发生的事情的真实概念。应用程序。
在紧凑框架2.0中有没有有效的方法来监控内存泄漏? 一个会指导我通过哪种方法导致问题或哪部分代码有问题?
或者在另一方面,任何有用的方式来管理我的记忆更多,比方说,有效的方式,因为我只有32MB的免费ram空间,这是一个非常狭窄的所有。
答案 0 :(得分:1)
我怀疑这个问题与实际的内存泄漏有关。
连接您的设备并启动调试会话并监控堆栈跟踪& Visual Studio中线程下拉列表中的线程数。我怀疑你在没有处理旧线程的情况下旋转太多线程,或者你对一个函数或子程序进行循环调用,这会使你的堆栈跟踪变得太大 - 你会发现你在小型设备上发现你的内存耗尽堆栈溢出。
答案 1 :(得分:0)
我们最终使用了为应用程序创建的内部数据库,我们得出的结论是,在这种情况下,纯粹使用XML文档并不聪明,因为我们有300多个客户端来处理XML文件。 我们最终不得不解析一个19,000行的XML文件,考虑到我们使用的平台这是荒谬的,这只给我们24MB的空间使用。
我们创建了一个内部数据库,用于处理内部应用程序业务和DAL逻辑。
这样我们就不必处理大量的XML文件,因此可以解决我们遇到的性能问题。