Newsgroup: it.comp.lang.delphi
Titolo: Analisi utilizzo memoria

Salve a tutti,
ho bisogno di verificare l'utilizzo della memoria di un programma, in
particolare devo verificare che la memoria via via allocata venga
correttamente rilasciata.
Ho provato a monitorare l'uso della memoria con Task Manager ma non trovo
corrispondenza tra le istruzioni del programma e come cambia il valore
della memoria occupata.
Sapete consigliarmi qualche altro strumento?
Grazie

se cerchi Sysinternals al solito modo, arrivi ad una pagina su msdn
(l'azienda è stata acquistata da zio billy..)
Qua trovi un set di tools magici...
Tra i quali il process monitor che è un eccellente alternativa al tm.
Tra () spiccano un defrag che lavora come si deve, e uno strumentino
che permette di deframmentare il file di swap...
Il tutto agratis, senza sacrifici umani e senza rituali vodoo
estremamente faticosi.
Questo "da fuori"...
Poi ci sono delle cose che puoi mettere nel codice...
A.

MemProof per delphi, segui bene le indicazione sul set delle opzioni del 
project.
Almeno su D3 andava, non saprei sulle versioni + recenti,
Giorgio
"M.Alfredo" <nos...@nospam.nospam> ha scritto nel messaggio 
news:9eereuow2w62$.1kn5y6m6moe0n$.dlg@40tude.net...


 Tra i quali il process monitor che � un eccellente alternativa al tm.
Stai parlando di "Process Explorer" giusto.
In effetti � molto pi� esaustivo del TM, in particolare quale parametro
dovrei monitorare?
Ho aperto le "propriet�" del processo che voglio controllare e sto provando
a tenere d'occhio il parametro "Virtual size", a tuo avviso � quello
giusto?
Ciao

 Almeno su D3 andava, non saprei sulle versioni + recenti,
I vari link che si trovano sulla rete non sono pi� validi, credo che il
prodotto non sia pi� scaricabile liberamente...
Ciao

 dovrei monitorare?
in genere io uso i "working sets".
Pax vobiscum.
A.

 Sapete consigliarmi qualche altro strumento?
Fai uso di process explorer indicato da Alberto in questo stesso 3d.
Aggiungi showmessage bloccanti posti strategicamente prima di certe 
procedure e chiamate pesanti, e monitora a runtime quanto cambia il 
"working set" dopo il click.
Una volta aperto process explorer, fai view->select columns->process 
memory e abilita "working set" e "peak working set": confrontandoli 
durante l'utilizzo del programma puoi notare se ci sono dei leaks.
Ciao
-- 
Morde

 
Intanto grazie a tutti per i suggerimenti, il working set per� non lo trovo
molto indicativo.
Stavo provando ad eseguire il progetto dal debug di Delphi e nel contempo a
monitorare l'uso della memoria...
Ho dei dubbi riguardo al fatto che la memoria venga deallocata ed allocata
"in tempo reale".
Mi spiego meglio, quando il progetto alloca memoria lo vedo subito sul PE?
Ciao

M.Alfredo ha scritto:

http://www.eurekalog.com/
La versione demo dura 30gg se non ricordo male.
^_Goblin_^
-- 
Ibis et redibis non morieris in bello
http://goblinland.myminicity.com/

 Mi spiego meglio, quando il progetto alloca memoria lo vedo subito sul PE?
Certamente, l'allocazione di memoria viene mostrata al successivo 
refresh della UI di process explorer.
-- 
Morde

 passo.
In un thread precedente mi sembra che Marco abbia evidenziato che nelle
ultime versioni di Delphi si possa avere alla chiusura o in corso di
esecuzione (non ricordo esattamente) l'indicazione della memoria
allocata e quella rilasciata, evidenzando la presenza di leaks.
FPC ha uno switch (-gh) per l'attivazione di tale funzione, ovvero
Heaptrc. Questo il risultato alla chiusura dell'applicazione senza leaks:
--------------
Heap dump by heaptrc unit
107462 memory blocks allocated : 4845624/5203952
107462 memory blocks freed     : 4845624/5203952
0 unfreed memory blocks : 0
True heap size : 360448
True free heap : 360448
---------------
Questo di seguito invece indica la loro presenza:
-------------------
Heap dump by heaptrc unit
71275 memory blocks allocated : 3949626/4191752
71271 memory blocks freed     : 3949508/4191624
4 unfreed memory blocks : 118
True heap size : 393216
True free heap : 392768
Should be : 392384
------------------
Antonio

 Heaptrc. Questo il risultato alla chiusura dell'applicazione senza leaks:
Ottimo :)
Ne approfitto per citare una unit che utilizzo per misurare i dettagli 
dei leaks, mi rifersco a memcheck:
http://v.mahon.free.fr/pro/freeware/memcheck/
L'OP potrebbe avvalersi anche di questo strumentino.
Ciao
-- 
Morde