在跟踪我正在从事的项目中的一些内存泄漏的过程中,我还一直致力于更新各种硬件 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/