Это, вероятно, имеет отношение к системному уровню.Я не знаю, как именно системы Google, но даже на стандартной машине Linux с 8 ГБ памяти это было бы возможно, потому что, как вы сказали, ленивая загрузка страниц.
numpy, вероятно, будет использовать malloc stdlib на моеммашина, которая для больших выделений использует систему mmap.Система должна обнулять страницы, предоставленные процессу, или она подвергается угрозе безопасности, что означает, что новые страницы mmap по умолчанию обнуляются.Поскольку вы не использовали ни одну из страниц, система не выделяет их для вас.
#include <stdio.h>
#include <unistd.h>
#include <sys/mman.h>
int main() {
void *ptr = mmap(0, 8000000000000, PROT_READ | PROT_WRITE, MAP_SHARED, 0, 0);
if (ptr == NULL) {
printf("Allocating bytes failed\n");
}
else {
printf("Success!\n");
}
}
Я догадываюсь, что вас удивит (много волнений), если вы попытаетесь использовать всех вашей памяти одновременно: D.