在几次 outOfMemory 异常之后,我启用了“gcAllowVeryLargeObjects”,它工作得非常好。我现在想知道为什么它不是 C# 中的默认选项(在 64 位平台上)。
是出于纯粹的兼容性原因吗?还是我错过了 gcAllowVeryLargeObjects 的主要缺点?
在几次 outOfMemory 异常之后,我启用了“gcAllowVeryLargeObjects”,它工作得非常好。我现在想知道为什么它不是 C# 中的默认选项(在 64 位平台上)。
是出于纯粹的兼容性原因吗?还是我错过了 gcAllowVeryLargeObjects 的主要缺点?
MSDN说:
在启用此功能之前,请确保您的应用程序不包含假定所有数组大小都小于 2 GB 的不安全代码。例如,使用数组作为缓冲区的不安全代码如果是在假设数组不会超过 2 GB 的情况下编写的,则可能容易出现缓冲区溢出。
因此,只要您不使用unsafe
代码,就没有缺点。