Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Virtuellen Speicher auslesen (https://www.delphipraxis.net/77571-virtuellen-speicher-auslesen.html)

Alex_ITA01 21. Sep 2006 10:59


Virtuellen Speicher auslesen
 
Hallo erstmal,
gibt es eine Möglichkeit, den virtuellen Speicher meiner Anwendung auszulesen.
Den normalen Speicherverbrauch kann ich auslesen aber ich benötige zusätzlich den virtuellen.
Wäre super wenn ihr mir helfen könntet.
MFG Alex

himitsu 21. Sep 2006 12:14

Re: Virtuellen Speicher auslesen
 
Also ich denke mal du ließt schon den virtuellen Speicher aus, denn an den Physischen kommst du eh nicht so einfach ran :zwinker:

Go2EITS 21. Sep 2006 13:12

Re: Virtuellen Speicher auslesen
 
Mit den Fingern kommst du an den physischen Speicher... :angel2:

Delphi-Quellcode:
 
var
memory: TMemoryStatus;
begin

//Memory ausgeben
memory.dwLength := SizeOf(memory);
GlobalMemoryStatus(memory);
x := memory.dwTotalPhys - memory.dwAvailPhys;
y := memory.dwTotalPhys;
Label1.Caption:=IntToStr(round((x/y)*100))+'% von '+inttostr(Round(y/1024))+' KB';
Das ist der freie phys. Speicher und gesamte physische Speicher. :-D
Da kommt man sehr wohl ran...
Ist da etwas virtuell? :gruebel:

himitsu 22. Sep 2006 18:54

Re: Virtuellen Speicher auslesen
 
Das was du/dein Programm sieht, ist der virtuelle Speicher :warn:

Windos verteil den physischen Speicher + die PageFile an die Programme und blendet Teile davon in deren virtuellen Speicher ein.

Oder hast du dich noch nie gefragt, warum z.B. deine Delphi-Programme immer (standardmäig) an der selben Adresse ($00400000..) liegen, selbst wenn mehrere gleichzeitig geladen sind?

Christian Seehase 22. Sep 2006 22:24

Re: Virtuellen Speicher auslesen
 
Moin Go2EITS,

hast Du Dir mal die anderen Teile von MEMORYSTATUS angesehen?
Z.b. dwTotalVirtual ;-)

Alex_ITA01 23. Sep 2006 15:11

Re: Virtuellen Speicher auslesen
 
Hallo,
also ich lese den Speicherverbrauch meiner Anwendung so aus:

Delphi-Quellcode:
  Wert  := 0;
  cb := SizeOf(_PROCESS_MEMORY_COUNTERS);
  GetMem(pmc, cb);
  pmc^.cb := cb;
  if GetProcessMemoryInfo(GetCurrentProcess(), pmc, cb) then
  begin
    Wert := pmc^.WorkingSetSize;
  end;
Ich will aber zusätzlich noch den virtuellen Speicher.
Im Taskmanager kann man sich ja noch eine Spalte zu jedem Prozess anzeigen lassen (Größe virtueller Speicher). Diesen Wert würde ich noch gerne haben wollen...
Danke schonmal.
MFG Alex

Alex_ITA01 25. Sep 2006 08:12

Re: Virtuellen Speicher auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo erstmal,
also MemoryStatus macht mich nicht ganz glücklich.
Ich benötige folgenden Wert, den der Taskmanager auch auslesen kann.

Siehe ScreenShot.
Ich hoffe ihr könnt mir da irgendwie helfen.
Wäre echt super, denn ich brauche den Wert...
MFG Alex
PS: Den ersten Wert (erste Spalte) habe ich bereits. Ich brauche NUR den zweiten

EWeiss 25. Sep 2006 08:24

Re: Virtuellen Speicher auslesen
 
Zitat:

Zitat von Alex_ITA01
Hallo erstmal,
also MemoryStatus macht mich nicht ganz glücklich.
Ich benötige folgenden Wert, den der Taskmanager auch auslesen kann.

Siehe ScreenShot.
Ich hoffe ihr könnt mir da irgendwie helfen.
Wäre echt super, denn ich brauche den Wert...
MFG Alex
PS: Den ersten Wert (erste Spalte) habe ich bereits. Ich brauche NUR den zweiten

Das kannst du erfahren über die Api GlobalMemoryStatus in verbindung
mit der Type MEMORYSTATUS

Hoffe das hilft weiter

Alex_ITA01 25. Sep 2006 08:27

Re: Virtuellen Speicher auslesen
 
Hallo,
MemoryStatus zeigt mir nur den virtuellen Speicher vom ganzen PC an.
dwTotalVirtual oder dwAvailVirtual.
Ich brauche aber den Verbrauch dieser Anwendung.
Geht das auch mit MemoryStatus? Wenn ja, wie? Ich bekomme es so nicht hin.
MFG Alex

EWeiss 25. Sep 2006 08:29

Re: Virtuellen Speicher auslesen
 
Zitat:

Zitat von Alex_ITA01
Hallo,
MemoryStatus zeigt mir nur den virtuellen Speicher vom ganzen PC an.
dwTotalVirtual oder dwAvailVirtual.
Ich brauche aber den Verbrauch dieser Anwendung.
Geht das auch mit MemoryStatus? Wenn ja, wie? Ich bekomme es so nicht hin.
MFG Alex

Sorry ich kann es dir nur als VB-BEispiel zeigen.
das sind alle Werte welche du über diese API erfahren kannst.

Delphi-Quellcode:
Public Type MEMORYSTATUS
    dwLength As Long
    dwMemoryLoad As Long
    dwTotalPhys As Long
    dwAvailPhys As Long
    dwTotalPageFile As Long
    dwAvailPageFile As Long
    dwTotalVirtual As Long
    dwAvailVirtual As Long
End Type
gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz