.net - 64 位中的内存泄漏是否需要比 32 位更长的时间才能导致 OutOfMemoryException

标签 .net memory-leaks out-of-memory 32bit-64bit

在跟踪我正在从事的项目中的一些内存泄漏的过程中,我还一直致力于更新各种硬件 API 库。其中一些是非托管 32 位库,它们强制我们的应用程序编译为 x86;这本身并不是问题。我正在努力将这些库升级到 64 位版本,以便我们的应用程序不必在 32 位中运行,但这让我想知道内存泄漏和可寻址内存空间。

考虑到内存泄漏,当在 64 位进程中运行时,应用程序理论上能够在遇到 OutOfMemoryException 之前运行更长的时间吗?至少有两种情况

  • 内存碎片 - 没有连续的内存块来分配大对象,因此即使看起来有足够的可用内存,也可能会抛出此异常

    <
  • 物理内存低 - 根本没有足够的可用内存(无论是否连续)来分配新对象

最佳答案

肯定需要更长的时间...

但是,根据您的机器和泄漏过程,多长时间可能会有所不同......

虽然 x64 可以支持 8TB 内存,但您的计算机很可能不允许。假设您有 4GB 内存和 12GB 页面文件,那么您可能会有 ~14GB 内存可供分配。 (系统有一些开销,无法使用完整的 16GB)

看看这个 post了解更多信息。

关于.net - 64 位中的内存泄漏是否需要比 32 位更长的时间才能导致 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21000107/

相关文章:

c - Linux C 应用程序内存不足

在 Google App Engine 上部署 Web 应用程序时,java 调用了 oom-killer

.net - 如何为F#应用程序编写退出处理程序?

c# - 如何动态设置哪些属性绑定(bind)到 DataGridView?

Java应用肆意消耗内存

java - 整个应用程序中的一个插页式广告

Java - 字节缓冲区内存不足

.net - 问题 : . NET 代码从同一磁盘上的一个目录而不是另一个目录运行

c# - 引用类型参数问题

使用列表类和 push_back 的 C++ 内存泄漏