Question

Quelqu'un peut-il expliquer clairement la signification des valeurs SIZE et RSS fournies par prstat dans Solaris?

J'ai écrit une application de test C ++ qui alloue de la mémoire avec new [] , la remplit et la libère avec delete [] .

Si j'ai bien compris, la valeur SIZE devrait être liée à la quantité de mémoire virtuelle qui a été "réservée". par le processus, c’est la mémoire "malloced" ou "nouvellement".

Cette mémoire ne se résume pas dans la valeur RSS à moins que je ne l’utilise vraiment (en remplissant certaines valeurs). Mais même si je libère de la mémoire, le flux RSS ne baisse pas.

Je ne comprends pas quelle sémantique je peux attribuer correctement à ces 2 valeurs.

Était-ce utile?

La solution

RSS représente (autant que je sache) la quantité de mémoire physique utilisée par un processus. Avec l'allocateur de mémoire par défaut de Solaris, la libération de mémoire n'a aucune incidence sur les flux RSS, car elle modifie simplement certains pointeurs et valeurs pour indiquer que la mémoire peut être réutilisée. Si vous n'utilisez plus cette mémoire en la réallouant, elle finira par être paginée et le RSS sera abandonné.

Si vous souhaitez que la mémoire libérée soit renvoyée immédiatement après une mémoire libre, vous pouvez utiliser l'allocateur Solarap mmap comme suit:

export LD_PRELOAD=libumem.so
export UMEM_OPTIONS=backend=mmap

Autres conseils

Taille correspond à la taille totale de la mémoire virtuelle du processus, y compris tous les fichiers et périphériques mappés. RSS doit correspondre à la taille du groupe de résidents, mais elle est complètement non fiable. devrait essayer d'obtenir cette information à partir de pmap .

En règle générale, une fois que la mémoire est allouée à un processus, elle ne sera jamais restituée au système d'exploitation. Sur les systèmes Unix, l’appel sbrk () est utilisé pour étendre l’espace adresse des processus, et il n’ya pas d’appel analogue à aller dans le sens opposé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top