Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi GetHeapStatus ?!? (https://www.delphipraxis.net/68067-getheapstatus.html)

Leominora 24. Apr 2006 11:50


GetHeapStatus ?!?
 
Hallo alle miteinander!

Meine Hardware-Kenntnisse sind schlecht (gebe ich zu)!

Was sagt mir das jetzt?

GetHeapStatus:

TotalAddrSpace: 3145728,
TotalUncommitted: 1097728,
TotalCommitted: 2048000,
TotalAllocated: 1109584,
TotalFree: 878456,
FreeSmall: 627280,
FreeBig: 251176, (erst: FreeBig: 336940 und was bedeutet das, wenn das soweit absinkt?)
Unused: 0,
Overhead: 59960,
HeapErrorCode: 0


Danke schon mal für eine Antwort!

Leo

himitsu 24. Apr 2006 11:55

Re: GetHeapStatus ?!?
 
geh mal mit dem Cursor auf GetHeapStatus und drück dann F1, ich glaub das kamm man kaum besser/leichter erklären :zwinker:

Leominora 24. Apr 2006 12:23

Re: GetHeapStatus ?!?
 
Zitat:

Beschreibung
GetHeapStatus gibt den aktuelle Status des Speichermanagers als THeapStatus-Typ zurück. Wenn die Unit ShareMem nicht in das aktuelle Projekt einbezogen wurde, gibt GetHeapStatus Informationen über den globalen Heap zurück. Wenn die Unit ShareMem einbezogen ist, liefert GetHeapStatus Information über den Speicher, der von dem aktuellen Projekt und anderen binären Modulen (wie z.B. DLLs), die auch die Unit ShareMem verwenden, gemeinsam genutzt werden kann. Nur wenn der integrierte Speichermanager verwendet wird, kann GetHeapStatus sinnvolle Informationen liefern. Wenn beispielsweise CodeGuard verwendet wird, wird der Speichermanager ersetzt und GetHeapStatus gibt immer nil (Delphi) bzw. NULL (C++) zurück.

Um Informationen über den Speichermanager abzurufen, der von Modulen gemeinsam genutzt wird, müssen Sie die Funktion GetHeapStatus aus der Unit ShareMem aufrufen. Die Funktion GetHeapStatus aus der Unit System gibt keine Werte für ein Projekt zurück, das gemeinsam genutzten Speicher verwendet.
Das hilft mir leider nicht weiter...

himitsu 24. Apr 2006 12:26

Re: GetHeapStatus ?!?
 
das steht in meiner D4-OH:
Code:
Die Funktion GetHeapStatus liefert den aktuellen Status der Speicherverwaltung zurück.

Unit

System oder ShareMem

Kategorie

Speicherverwaltung

type

  THeapStatus = record
    TotalAddrSpace: Cardinal;s
    TotalUncommitted: Cardinal;
    TotalCommitted: Cardinal;
    TotalAllocated: Cardinal;
    TotalFree: Cardinal;
    FreeSmall: Cardinal;
    FreeBig: Cardinal;
    Unused: Cardinal;
    Overhead: Cardinal;
    HeapErrorCode: Cardinal;

  end;

function GetHeapStatus: THeapStatus;

Beschreibung

GetHeapStatus gibt den aktuellen Status der Speicherverwaltung in einem THeapStatus-Record zurück. Binden Sie die Unit System ein, um Informationen über den globalen Heap zu ermitteln. Binden Sie statt System die Unit ShareMem ein, wenn der Speicher von verschiedenen Prozessen gemeinsam genutzt wird.

Die Werte im THeapStatus-Datensatz bedeuten folgendes:
Feld
Bedeutung

TotalAddrSpace
Der (aktuelle) gesamte Adressierungsbereich in Byte, der für Ihr Pascal-Programm zur Verfügung steht. Dieser Bereich wächst mit dem Anwachsen der dynamischen Speicherung Ihres Programms an.

TotalUncommitted
Die gesamte Byte-Anzahl (von TotalAddrSpace), für die kein Platz in der Swap-Datei zugewiesen wurde.

TotalCommitted
Die gesamte Byte-Anzahl (von TotalAddrSpace), für die Platz in der Swap-Datei zugewiesen wurde. Hinweis: TotalUncommitted + TotalCommitted = TotalAddrSpace

TotalAllocated
Die gesamte Byte-Anzahl, die durch Ihr Programm dynamisch zugewiesen wurde.

TotalFree
Die gesamte Anzahl nicht belegter Byte, die (aktuell) für die Zuweisung durch Ihr Programm zur Verfügung steht. Falls diese Anzahl überschritten wird und ausreichend virtueller Arbeitsspeicher vorhanden ist, wird von Betriebssystem weiterer Adressierraum zugewiesen. TotalAddrSpace wird entsprechend erhöht.

FreeSmall
Gesamtanzahl der Byte von kleinen Speicherblöcken, die aktuell nicht durch Ihr Programm zugewiesen wurden.

FreeBig
Gesamtanzahl der Byte von großen Speicherblöcken, die aktuell nicht durch Ihr Programm zugewiesen wurden. Große freie Blöcke können durch Zusammenführen von kleinen, fortlaufenden freien Blöcken oder durch Freigabe von großen dynamischen Zuweisungen geschaffen werden. (Die genaue Größe von Blöcken ist unwesentlich.)

Unused
Gesamtanzahl der Byte, die nie von Ihrem Programm zugewiesen wurden. Hinweis: Unused + FreeBig + FreeSmall = TotalFree; Hinweis: Dabei handelt es sich um dynamische Zuweisungen durch das Benutzerprogramm.

Overhead
Gesamtanzahl der Byte, die für den Heap-Manager erforderlich sind, um alle von Ihrem Programm zugewiesenen Blöcke dynamisch zu verwalten.

HeapErrorCode
Gibt den aktuelle Status des Heap, wie intern festgelegt, an.


Hinweis
TotalAddrSpace, TotalUncommitted und TotalCommitted beziehen sich auf Betriebssystemspeicher, der vom Programm verwendet wird. TotalAllocated und TotalFree beziehen sich auf Heap-Speicher, der innerhalb des Programms für dynamische Zuweisungen benutzt wird. Verwenden Sie für die Überprüfung des dynamischen Speichers in Ihrem Programm, daher TotalAllocated und TotalFree.Die Funktion GetHeapStatus liefert den aktuellen Status der Speicherverwaltung zurück.

Leominora 24. Apr 2006 12:58

Re: GetHeapStatus ?!?
 
Delphi2005... da wurde nicht nur bei der Hilfe eingespart!

Danke!!!

Leo


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 Uhr.

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