【问题标题】:.NET compact framework and memory management: OOM Exception.NET 紧凑框架和内存管理:OOM 异常
【发布时间】:2011-04-04 20:09:15
【问题描述】:

当 DOM 处理大小为 2MB 的 xml 文件时,我的 .NET CF 3.5 应用程序收到内存不足异常。现在我明白这应该改为 SAX 处理,但我想知道为什么会收到这个错误。

来自http://blogs.msdn.com/b/mikezintel/archive/2004/12/08/278153.aspx, “Windows CE 为大型分配创建了一个额外的虚拟地址空间,大小为 1G。” “32MB 的应用程序虚拟地址空间可能会受到大型应用程序的巨大压力,如果它变得足够碎片化,即使有可用的物理内存也可能导致 OOM 错误。”

这是否意味着如果我的应用程序的堆大小(包括 DOM)占用的内存超过 32 MB,应用程序将崩溃,但它不能为此分配使用更多的 1GB 虚拟地址空间吗?

【问题讨论】:

    标签: .net memory-management compact-framework


    【解决方案1】:

    据我所知,所有普通数据(和相关对象)都存在于应用程序的 32Mb 虚拟地址空间中——要使用 1Gb 额外地址空间,您必须查看内存映射。当然,在您的情况下,替代方案将是基于流的处理。

    【讨论】:

      【解决方案2】:

      我们发现这是对 CF 内存问题非常有用的解释(和解决方案!)。我们在过去使用 Intermec 实用程序时遇到问题的应用程序上成功使用了这种方法(我们遇到了 P/Invoke 问题——我们应用程序的 VM 空间已被充分利用,因此无法加载 P/Invoke dll。)

      http://robtiffany.com/mobile-development/memmaker-for-the-net-compact-framework

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多