Любой недетерминированный процесс, очевидно, может каждый раз приводить к разному использованию памяти.Например, вы никогда не сможете запустить большую программу, такую как Gimp или Chrome, и получить одно и то же число дважды, даже если вы выполняете одну и ту же операцию.
Однако, если вы видите изменения в использовании памяти дляпростой, очень детерминированный процесс, вы, вероятно, включили рандомизацию макета адресного пространства.
Вот пример foo.c
:
int main() {
return 0;
}
Вы можете видеть, как каждый раз используется разная память:
$ gcc foo.c -o foo
$ /usr/bin/time -f +%M ./foo
+1144
$ /usr/bin/time -f +%M ./foo
+1048
$ /usr/bin/time -f +%M ./foo
+1060
Это потому, что ASLR полностью включен:
$ cat /proc/sys/kernel/randomize_va_space
2
Если выключить его:
$ sudo tee /proc/sys/kernel/randomize_va_space <<< 0
0
Вы получите то же значение:
$ /usr/bin/time -f +%M ./foo
+1144
$ /usr/bin/time -f +%M ./foo
+1144
$ /usr/bin/time -f +%M ./foo
+1144
Но не забудьте включить его для дополнительной безопасности:
sudo tee /proc/sys/kernel/randomize_va_space <<< 2