Come altri hanno già detto, e come menzionato nel link che fornisci nella tua domanda, avere uno stack da 8 MiB non fa male a nulla (a parte il consumo di spazio degli indirizzi, su un sistema a 64 bit che non ha importanza).
Linux utilizza stack da 8 MiB da molto tempo; la modifica è stata introdotta nella versione 1.3.7 del kernel, nel luglio 1995. All'epoca era stata presentata come l'introduzione di un limite, prima non ce n'era uno:
Limita lo stack a un valore predefinito ragionevole:root può sempre aumentare questo limite se necessario. 8 MB sembrano ragionevoli.
Su Linux, il limite dello stack influisce anche sulla dimensione degli argomenti del programma e sull'ambiente, che sono limitati a un quarto del limite dello stack; il kernel impone un minimo di 32 pagine per gli argomenti e l'ambiente.
Per i thread, se il limite dello stack (RLIMIT_STACK
) è illimitato, pthread_create
applica i propri limiti agli stack dei nuovi thread e, sulla maggior parte delle architetture, è inferiore a 8 MiB.
8MB è il virtuale dimensione della pila. Si verificherà un errore di pagina quando l'applicazione tenterà di utilizzare più stack di quanto attualmente allocato fisicamente. Al gestore degli errori di pagina del kernel verrà quindi assegnato un fisico pagina e quindi la tua applicazione continuerà.
Vedi https://unix.stackexchange.com/a/280865/21212 per una spiegazione completa.
Quindi ridurre la dimensione dello stack dovrebbe non hanno alcun effetto nel ridurre l'utilizzo della memoria fisica della tua applicazione.