2016-10-26 1 views
0

Dernièrement, j'ai essayé de comprendre et de localiser une fuite de mémoire dans mon logiciel. Pour ce faire, j'ai commencé à surveiller l'utilisation de la mémoire sur de longues périodes afin de déterminer s'il y avait un modèle qui permettrait de comprendre ce problème.Comprendre comment le logiciel accumule la mémoire dans le système

Dans le graphique ci-dessous, la mémoire virtuelle est dessinée en violet et le% de la mémoire de la CPU en vert, l'axe des x représente le temps en secondes.

Memory accumulation

Il y a quelques grandes pointes qui se produisent lorsqu'une fonction de streaming vidéo est activée, mais cela ne semble pas être un problème puisque le logiciel semble pouvoir effacer ces derniers. Autour de la deuxième 7500, il ya une grosse baisse en raison d'une fonction de veille du système qui a été activé pendant quelques secondes. Une fois que le système revient à la normale, il efface une partie de la mémoire accumulée auparavant. Jusqu'à présent, cela a du sens. La chose que je ne peux pas comprendre est que, si la quantité de mémoire stockée diminue, pourquoi le% Mem ne diminue-t-il pas? Dans ce cas, il augmente réellement.

Il n'y a pas de corrélation claire entre% Mem et l'utilisation de la mémoire virtuelle. Quelqu'un peut-il m'aider à comprendre cela?

Répondre

0

J'ai réalisé que la mémoire virtuelle n'est pas réellement liée à% MEM, car elle est stockée sur le disque dur et permutée en RAM lorsqu'un processus en a besoin. La mémoire d'un processus associé au% MEM est le RSS (Resident Set Size), qui est la mémoire qui est stockée dans la RAM.

Dans le graphique suivant j'ai surveillé RSS à la place, et la corrélation est évidente.

enter image description here