【发布时间】:2010-07-12 09:27:34
【问题描述】:
是否有任何通用算法可以根据物理内存访问错误检查设备的 RAM 内存?我认为最简单的方法是遍历整个内存并写入、读取和比较每个字节。也许有更好的方法吗? 如何在 .NET CF 中分配整个可访问内存? 我正在使用新设计的基于 Windows CE 的设备,我想确保在正常工作期间不会出现随机内存错误。
【问题讨论】:
是否有任何通用算法可以根据物理内存访问错误检查设备的 RAM 内存?我认为最简单的方法是遍历整个内存并写入、读取和比较每个字节。也许有更好的方法吗? 如何在 .NET CF 中分配整个可访问内存? 我正在使用新设计的基于 Windows CE 的设备,我想确保在正常工作期间不会出现随机内存错误。
【问题讨论】:
当内存正在使用或被占用时,您无法执行此操作,并且使用托管语言执行此操作几乎是不可行的(.NET CLR 会在内存中移动您的对象,这是一个您无法控制的进程,但您可以) t 固定项目的所有对象)。使用 .NET 的另一个缺点是它对您隐藏了内存,并且它的许多数据类型需要连续的内存块。
内存错误还有另一个问题:根据内存驱动程序、硬件和内存芯片和/或主板的特性,错误甚至不会出现,因为内存芯片会隐藏系统中的错误位。
但是有一个简单的解决方法。周围有许多内存错误检查程序,Windows 也可以为您完成:然后它会在启动时重新启动并检查您的内存,在操作系统启动之前。大多数 A 品牌都会有一个板载内存检查实用程序,可以进行相当深入的 (即,所有 DELL 计算机的系统工具中都有它)。
尝试自己完成这个复杂的过程将非常困难,因为操作系统隐藏了物理内存位置,并且如第一段所述:您将无法访问大部分内存,即使您写一个驱动,只是因为它在使用中。
【讨论】: