PDA

View Full Version : [C/C++] Occupazione della memoria di un'applicazione


the_tube
16-01-2009, 20:35
Egregi,

il quesito è questo: come posso fare per ottenere lo stato di occupazione della memoria di un'applicazione? Ovvero, mentre sto eseguendo l'applicazione vorrei sapere in un certo istante quanta memoria ha allocato; questo anche per capire se ho dei leak da qualche parte.

Ho provato a dare un'occhiata alle API, ma ho trovato solo GlobalMemoryStatus, che mi da uno snapshot della memoria dell'intero sistema.

Grazie a tutti,

TT.

DanieleC88
16-01-2009, 23:26
Ma è un'informazione che ti serve all'interno dell'applicazione? Se vuoi solo individuare i memory leak, puoi affidarti a vari tool (memcheck per esempio) quali Valgrind (http://valgrind.org/) su sistemi UNIX e Purify (http://www-01.ibm.com/software/awdtools/purify/win/) per Windows.

fero86
17-01-2009, 04:36
dovresti specificare se intendi conoscere solo la dimensione di commit o anche quella di reserve; inoltre immagino che non ti interessi conoscere la dimensione del non-paged pool.

ipotizzo due maniere di ottenere ció che vuoi:

1) enumera tutte le pagine con VirtualQuery;

2) chiama GetProcessMemoryInfo (http://msdn.microsoft.com/en-us/library/ms683219(VS.85).aspx) e leggi il campo QuotaPagedPoolUsage della struttura.

potrebbe esserci qualche altra maniera a me sconosciuta.