C
non è java
dove la dimensione dell'heap è fissata all'avvio.
L'heap e lo stack di una C
l'applicazione compilata condivide lo stesso spazio di memoria virtuale e si regola dinamicamente.
La dimensione di questo spazio dipende se stai compilando un binario a 32 o 64 bit, e anche se il tuo kernel è a 32 o 64 bit (su hardware SPARC, è sempre a 64 bit).
Se non si dispone di RAM sufficiente e si desidera che Solaris accetti comunque grandi prenotazioni di memoria, allo stesso modo in cui Linux esegue il commit della memoria, è sufficiente aggiungere abbastanza swap affinché la prenotazione sia supportata dallo spazio di archiviazione effettivo.
Se per qualche motivo non sei soddisfatto dell'allocatore di memoria libc di Solaris, puoi valutare quelli alternativi in bundle come libumem
, mtmalloc
o la terza parte hoard
. Vedere http://www.oracle. com/technetwork/articles/servers-storage-dev/mem-alloc-1557798.html
per i dettagli.