Newsgroup: it.comp.lang.delphi
Titolo: Memoria utilizzata dall'applicazione

Salve! Esiste per caso un'api per sapere quanta memoria complessiva sta
utilizzando la mia applicazione?
Grazie!

 complessiva sta utilizzando la mia applicazione?
per esistere, esiste. Dipende da quanto seria è la tua applicazione. 
Programma commerciale?
-- 
 < 
http://www.reactos.com/
 >  Open source clone of Windows NT. Current
     Don't stand, REACT!      version 0.0.19. C, C++ and ASM developers
                              and beta testers are welcome!

 Programma commerciale?
no no e' uno dei miei giochini.. sicomme occupa un sacco di memoria, e ne
alloca/dealloca in continuazione, vorrei avere un indice da tenere
sott'occhio..


Uh? Uno dei tuoi giochini? Ce li fai vedere?
--
Jax piace gioco

 Grazie!
prego.
Ciao, Antò.

> Uh? Uno dei tuoi giochini? Ce li fai vedere?
Si sono principalmente programmatore (amatoriale) di videogiochi.
Puoi trovare tutti quelli che ho completato sul mio sito:
http://msx.rules.it
 mentre l'ultimo (Nardo and the broken astronav),
un'avventura grafica, che e' completo ma lo sto ancora testando (mi da
problemi con alcune schede video), lo puoi trovare temporaneamente qui:
http://spazioinwind.iol.it/msx/nardo.htm
Anzi se lo provi e non si vede bene, fammi sapere che magari riesco a venire
a capo del difetto.
La gestione della memoria riguarda un nuovo progetto che ho iniziato in
questi giorni..
ovviamente e' tutto 100% puro Delphi :)

 venire a capo del difetto.
Lo provo stasera, non posso abusare troppo dell'ufficio ;)
--
Jax

Memoria fisica?

> Memoria fisica?
Sia fisica che virtuale.. praticamente mi interessa sapere quanta memoria
usa, a prescindere che si trovi sulla ram, o che windows l'abbia spostata
sul disco

 
http://www.codebake.com/memoryinfo.php
Ti ringrazio, ma queste cose riguardano la memoria di tutto il sistema,
cioe' quanta e' occupata e quanta libera. A me serve invece sapere quanta ne
occupa soltanto la mia applicazione.

Allora non sono in grado di aiutarti, in quanto anche io conosco, come Antò.
la GlobalMemoryStatus.
Quindi .... magari se mi viene qualcosa...

 sapere quanta ne occupa soltanto la mia applicazione.
bhe, puoi fare un controllo prima e dopo aver lanciato il tuo giochino e 
fare due conti.
Ciao, Antò.

 fare due conti.
Eh ma purtroppo come ho detto il programma cambia sensibilmente la quantita'
di memoria occupata nel tempo, e infatti il valore mi serviva per
controllare che non crescesse troppo (soprattutto a causa di errori con la
deallocazione delle strutture).
E poi mi sa che l'idea che hai suggerito ha qualche problema, tipo se
insieme al mio programma lancio un'altra applicazione..
Tnx lo stesso!

 sta utilizzando la mia applicazione?
Credo tu possa usare GetProcessHeap(s) + HeapSize. (v. anche
GetProcessWorkingSetSize)
Inoltre, da Delphi, direttamente GetHeapStatus (v. le note in fondo).
Saluti
Paolo Arosio

{MSX} ha scritto:

ne tiene traccia internamente Delphi. Dai un'occhiata alle funzioni di 
gestione della memoria, c'è tutto quello che ti serve


{MSX} ha scritto:

specificamente: vedi la sezione "Memory management routines" nel 
manuale di Delphi. Questo presupponendo che tu usi esclusivamente 
GetMem/FreeMem o New/Dispose. Altrimenti, non è una cosa semplice


 ha scritto nel messaggio
news:aeaaf9$5ak5n$2...@ID-30644.news.dfncis.de...


procedure TForm1.Button1Click(Sender: TObject);
begin
heapnow:=GetHeapStatus;
form1.caption:=inttostr(heapnow.totalallocated);
end;
In tal modo la caption della form indica la memoria attualmente allocata
dalla TUA applicazione.
var
  Form1: TForm1;
  heapnow: THeapStatus;
----
ecco fatto :)

 
http://spazioinwind.iol.it/msx/nardo.htm
STU-PEN-DOOOO !!!
Complimentiiii o "Grande MSX" :DDDDDD
Davide DG.
-- 
All resistance is futile! Prepare to be disassembled !

 Complimentiiii o "Grande MSX" :DDDDDD
Ehehe grazie mille :D
E' stato un lavoraccio ma sembra piacere abbastanza :)

 sta utilizzando la mia applicazione?
Un metodo che ho usato tempo fa e' stato quello di creare un
"wrapper" per le normali funzioni GetMem/FreeMem/ReallocMem/New
e Dispose.  Il metodo funziona anche con le costruzioni/distruzioni
di oggetti e consiste nel creare un tuo memory manager che si 
limita a tener traccia della memoria allocata in variabili 
interne.  Le funzioni da usare sono GetMemoryManager e 
SetMemoryManager.  C'e' un esempio nell'help di Delphi.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 SetMemoryManager.  C'e' un esempio nell'help di Delphi.
Gia', avevo visto il wrapper, infatti avevo una mezza idea di usarlo,
soltanto che mi tocca tenere traccia di tutte le allocazioni. Il problema e'
che il sistema tiene gia' traccia di tutto, quindi sarebbe come avere due
copie della stessa informazione.. Tanto piu' che ho visto che le allocazioni
sono tantissime (quasi mezzo milione solo per l'inizializzazione del
programma) e spesso di piccole dimensioni (anche di uno o due byte)..
Beh fa nulla.. sembra che non ci sia un'api apposta. vedro' di controllare
meglio il codice o al limite usare questa tecnica..
Grazie!