Memory Lib - Arbeitsspeicher ermitteln

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

Pummelie

Betreff: Memory Lib - Arbeitsspeicher ermitteln

BeitragSo, Jan 29, 2012 23:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier eine kleine Lib, mit der ihr den gesamten, den freien und den belegten Arbeitsspeicher ermitteln könnt.
Um das Problem von BB - Int's zu entgehen könnt ihr alle Werte auch als String holen.

Funktionen:

RefreshMEM
Rückgabe: Keine
Parameter: Keine
Beschreibung Aktualisiert die Werte für die Funktionen.
Muss vor allen anderen Funktionen aufgerufen werden.
Achtung Befehl nimmt viel Zeit in Anspruch!


GetMEMSizeI
Rückgabe: Gesamtgröße des Speichers
Parameter: MB - Rückgabe in Megabyte statt in Byte
Code: [AUSKLAPPEN]
1 - Rückgabe in Megabyte
0 - Rückgabe in Byte

Beschreibung Gibt den gesamten Arbeitsspeicher als Int zurück.

GetMEMSizeS
Rückgabe: Gesamtgröße des Speichers
Parameter: FM - Rückgabeformat
Code: [AUSKLAPPEN]
1 - Rückgabe in Byte
2 - Rückgabe in KiloByte
3 - Rückgabe in MegaByte
4 - Rückgabe in GigaByte

Beschreibung Gibt den gesamten Arbeitsspeicher als String zurück.

GetMEMFreeI
Rückgabe: Freier Speicher
Parameter: MB - Rückgabe in Megabyte statt in Byte
Code: [AUSKLAPPEN]
1 - Rückgabe in Megabyte
0 - Rückgabe in Byte

Beschreibung Gibt die Größe des freien Speichers als Int zurück.

GetMEMFreeS
Rückgabe: Freier Speicher
Parameter: MB - Rückgabe in Megabyte statt in Byte
Code: [AUSKLAPPEN]
1 - Rückgabe in Byte
2 - Rückgabe in KiloByte
3 - Rückgabe in MegaByte
4 - Rückgabe in GigaByte

Beschreibung Gibt die Größe des freien Speichers als String zurück.

GetMEMUseI
Rückgabe: Benutzter Speicher
Parameter: MB - Rückgabe in Megabyte statt in Byte
Code: [AUSKLAPPEN]
1 - Rückgabe in Megabyte
0 - Rückgabe in Byte

Beschreibung Gibt die Größe des benutzten Speichers als Int zurück.

GetMEMUseS
Rückgabe: Benutzter Speicher
Parameter: MB - Rückgabe in Megabyte statt in Byte
Code: [AUSKLAPPEN]
1 - Rückgabe in Byte
2 - Rückgabe in KiloByte
3 - Rückgabe in MegaByte
4 - Rückgabe in GigaByte

Beschreibung Gibt die Größe des benutzten Speichers als String zurück.

GetMEMFreePer
Rückgabe: Freier Speicher
Parameter: Keine
Beschreibung Gibt den freien Speicher in Prozent zurück.


Download:
Link: Hier Klicken!

30.01.2012 Edit: Habe die Lib nochmal aktualisiert, und ein Testprogramm bei gelegt.
It's done when it's done.
  • Zuletzt bearbeitet von Pummelie am Mo, Jan 30, 2012 18:13, insgesamt 2-mal bearbeitet

count-doku

BeitragSo, Jan 29, 2012 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

habe gerade mal alle Befehle getestet, scheint zu funktionieren.
Mag hilfreich für Programme sein, die größere Speichermengen reservieren...

Leider gibt der eine Befehl einen negativen Wert zurück, wenn man das Minus mit Abs wegschneidet,
stimmt es.

lg,
Count-Doku

Eingeproggt

BeitragMo, Jan 30, 2012 0:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
GetMEMFreePer
Rückgabe: Freier Speicher
Parameter: MB - Rückgabe in Megabyte statt in Byte
Beschreibung Gibt den freien Speicher in Prozent zurück.


Ähh... eine Funktion die einen Wert in Prozent zurück gibt und ich darf wählen ob ich Byte oder Megabyte davon haben will? Irgendwie unlogisch Wink

Ansonsten wäre nur zu sagen: Hab ich es richtig verstanden dass die Funktionen den globalen Wert ermitteln, nicht den von meinem aktuellen Programm?

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Pummelie

BeitragMo, Jan 30, 2012 0:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Ups, danke hab ich berichtigt.

Ja, es ermittelt den globalen Status.
It's done when it's done.
  • Zuletzt bearbeitet von Pummelie am Mo, Jan 30, 2012 13:47, insgesamt einmal bearbeitet

ozzi789

BeitragMo, Jan 30, 2012 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht schlecht, besten Dank Smile
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Nicdel

BeitragMo, Jan 30, 2012 21:41
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
Type MemStatus

Field dwLength%
Field dwMemoryLoad%
Field dwTotalPhys%
Field dwAvailPhys%
Field dwTotalPageFile%
Field dwAvailPageFile%
Field dwTotalVirtual%
Field dwAvailVirtual%

End Type


Local memstat.MemStatus = New MemStatus


GlobalMemoryStatus(memstat)

Print memstat\dwMemoryLoad
Print memstat\dwTotalPhys ;Muss gewrappt werden wenn größer als 2 GB, siehe https://www.blitzforum.de/forum/viewtopic.php?p=356934#356934

WaitKey


Code: [AUSKLAPPEN]
.lib "kernel32.dll"
GlobalMemoryStatus%(buffer*):"GlobalMemoryStatus"
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Pummelie

BeitragMo, Jan 30, 2012 22:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@Nicdel
Das ermittelt den Speicher den Windows erkennt / verwenden kann, nicht den Tatsächlichen...
It's done when it's done.

Nicdel

BeitragMo, Jan 30, 2012 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Pummelie hat Folgendes geschrieben:
@Nicdel
Das ermittelt den Speicher den Windows erkennt / verwenden kann, nicht den Tatsächlichen...


BlitzBasic: [AUSKLAPPEN]
;Offsets
;4: dwMemoryLoad
;8: ullTotalPhys
;16: ullAvailPhys
;24: ullTotalPageFile
;32: ullAvailPageFile
;40: ullTotalVirtual
;48: ullAvailVirtual
;56: ullAvailExtendedVirtual

memstat = CreateBank(64)
PokeInt memstat,0,64

GlobalMemoryStatusEx(memstat)

Print PeekInt(memstat,4)
Print PeekInt(memstat,8) ;Muss gewrappt werden wenn größer als 2 GB, siehe https://www.blitzforum.de/forum/viewtopic.php?p=356934#356934

WaitKey


Code: [AUSKLAPPEN]
.lib "kernel32.dll"
GlobalMemoryStatusEx%(buffer*):"GlobalMemoryStatusEx"
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Xeres

Moderator

BeitragMo, Jan 30, 2012 22:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@Nicdel:
Zitate sprechen nicht für sich selbst und man könnte es als unhöflich erachten, nur Code ohne weitere Erklärung zu posten.
Bitte kommuniziert nicht so, als ob dem anderen klar sein müsste, was in eurem Kopf vor geht...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Pummelie

BeitragMo, Jan 30, 2012 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist ja schön wenn du einen Index für die Verwendung einer Struktur aus der WIN-API hinzufügst, das kann dennoch nicht den tatsächlichen Speicher ermitteln, sondern nur Windows fragen wieviel verwendbar ist...
It's done when it's done.

Nicdel

BeitragDi, Jan 31, 2012 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@Xeres: Sorry, bin es so gewohnt. Der Code zeigt die Ermittlung des Speichers ohne irgenwelche zusätzliche DLLs.

@Pummelie: Deine DLL benutzt soweit ich weiß die selbe Funktion, wo ist der Unterschied?
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Pummelie

BeitragDi, Jan 31, 2012 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Meine DLL nutzt diese Funktion auch, aber nur um eine Überprüfung der Werte vor zu nehmen, da es bei einigen Fällen zu Ermittlungsfehlern kommen kann (zb. alles 0) und so eine Ähnlichkeitsprüfung vorgenommen wird.
It's done when it's done.

Nicdel

BeitragDi, Jan 31, 2012 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles klar.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group