我构建了一个应用程序(OpenGL / SDL),它在不同的系统上使用的内存量非常不同:
LGA2011/HD6950/16GbRam/W8PRO - 185Mb
LGA1155/HD7850/16GbRam/W7PRO - 180Mb
LGA1333/Quadro2000/W7PRO - 110Mb <----------- 这个怎么了?
2011MBA - 300+Mb(我认为这是由于 igpu 共享 RAM)
我该如何确定此情况的原因?
答案1
至于你的问题,我所知道的是。当你查看正在使用的内存时,它可能会显示不同的类型。如果使用 RAM,某些计算机会占用部分内存并将其移至 SWAP。它也可能使用虚拟内存,占用的空间较少,从而使你的应用程序看起来使用的内存较少。
如果它们运行在不同的操作系统或版本上,则可能会产生影响。例如,Windows XP 处理内存的方式可能与 Windows 7 不同,这可能会稍微改变您的应用使用的实际内存量。
显卡或其他硬件的细微变化也会导致这种情况,因为它们需要其他应用程序的内存,但这种情况通常不会发生在 Windows 上,更不会发生在基于 Unix 的系统中。
至于 Mac,您说得对。OS X 存储内存的方式完全不同,它会尽可能多地使用所有 RAM 内存,当内存不足时,它会开始减少内存量。但 GPU 共享 RAM 才是导致内存使用量如此之高的原因。
我对这个主题并不是最了解的,因为我也是一名软件工程师,也许电气工程师(或具有类似知识的人)可以更详细地讲解。