【问题标题】:SandCastle and OutOfMemoryExceptionSandCastle 和 OutOfMemoryException
【发布时间】:2009-07-20 08:05:21
【问题描述】:

SandCastle 无法处理我们的类库,因为它在 XSL 转换期间崩溃并出现 OutOfMemoryException 异常。

除了明显的购买更多内存之外,我们能做些什么呢?问题是,这是我们的开发机器在 32 位操作系统上具有 3.3GB 内存,所以基本上我们要么升级到 64 位和更多内存(这暂时不会发生),要么设置一个虚拟服务器来使用大量内存执行此操作(这将影响生产服务器)。

我严重怀疑我们是否拥有世界上最大的需要帮助文件的类库,那么我们有哪些选择?是否有我们忘记关闭的神奇“不要因内存不足错误而崩溃”设置?

【问题讨论】:

    标签: out-of-memory sandcastle


    【解决方案1】:

    如果您使用的是 32 位 Windows,则您的用户进程默认只能寻址 2 GB 内存(3 GB 以大地址感知运行)。 2 GB 用于该过程中的所有内容,因此 .NET 运行时、标准库、预订等都占据了它们的位置。根据我的经验,在 32 位上为 .NET 应用程序留下了大约 1.5 GB 的空间。

    您可以使用大地址感知开关来访问更多内存,但如果您使用的是 32 位 Windows,则它不是免费的。迁移到 64 位 Windows 将使您的 32 位应用程序访问整个 32 位地址空间,从而为您提供 4 GB 的可寻址空间。

    我最近写了一篇博客文章,详细介绍了 .NET 应用程序的内存使用情况,但由于我用丹麦语写博客,您可能无法阅读它。不过,如果你想看看,链接是:http://kodehoved.dk/?p=156

    您还可以找到相关的 MSDN 博客文章:http://blogs.msdn.com/maoni/archive/2007/05/15/64-bit-vs-32-bit.aspx

    【讨论】:

    • 虽然我会尝试这个,但它并没有向我注册,我们没有为我们的计算机启用 /3GB 支持,所以我必须考虑这样做。问题仍然是这是否只是一个临时修复(假设它修复了我们当前的问题)。 Sandcastle 会不会只使用这么多内存而没有办法让它不这样做?
    • 对不起,我不能说。我的回答主要是关于内存使用的一般建议。
    猜你喜欢
    • 2013-05-18
    • 2012-12-17
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 2011-07-14
    • 2012-02-25
    相关资源
    最近更新 更多