AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ramauslastung (bei ramgrößen >2gb)
Thema durchsuchen
Ansicht
Themen-Optionen

Ramauslastung (bei ramgrößen >2gb)

Ein Thema von easteregg · begonnen am 20. Mai 2006 · letzter Beitrag vom 26. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:03
Das sollte nicht geschehen, denn du kannst ja auch ein Pogramm, welches für <2 GB compiliert wurde auf einem System, mit weniger als 1 GB, laufen lassen

Es kommen aber nicht alle Codes mit Pointern über 2GB klar ... du mußt also auch aufpassen, daß alle in deinem Programm (importierte Funktionen, geladene DLLs ...) auch dieses kann, wenn du diese Option aktivierst.
$2B or not $2B
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#12

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:34
Pointer sind ja nur 32bit-Werte (auf einem 32bit-System). Sie können also theoretisch wie vorzeichenbehaftete oder vorzeichenlose Integer behandeltwerden, also wir LongInt vs. LongWord um beim Delphi-Jargon zu bleiben.

Das höchste Bit in diesem vorzeichenbehafteten Integer wird bei der Methode "two's complement" immer 1 sein, wenn der Wert negativ ist. Bei positiven Werten ist das höchste Bit immer 0. Wenn wir uns den Wert anschauen, der bei 32bit die Bitmaske des höchsten Bits darstellt, nämlich $80000000, sollte uns etwas auffallen - das ist genau unsere 2GB Grenze.

Wie es scheint, benutzt Delphi also vorzeichenbehaftete Pointerwerte "by default", was sich aber umstellen läßt (wußte ich z.B. auch nicht, danke himitsu!).
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#13

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:38
Zitat von himitsu:

Es kommen aber nicht alle Codes mit Pointern über 2GB klar ... du mußt also auch aufpassen, daß alle in deinem Programm (importierte Funktionen, geladene DLLs ...) auch dieses kann, wenn du diese Option aktivierst.
aber das ist ja nur relevant wenn mein programm soviel ram verbraucht oder?
(irgendwie ist das thema grad nen bömischer wald für mich )
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#14

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:51
Zitat von easteregg:
aber das ist ja nur relevant wenn mein programm soviel ram verbraucht oder?
(irgendwie ist das thema grad nen bömischer wald für mich )
Nein, ist es nicht, da die meisen MemoryManager (DelphiMM/FastMM/FastXMM...) speicher oben und unten im virtuellen Raum ablegen ... so werden z.B. bei Fast(X)MM alle kleinen/mittleren Speicherblöcke unten (Richtung nil) und die großen Blöcke oben reserviert, wärend in der Mitte/hinten/ die ganzen DLL's gemappt sind ... also in der Mitte sieht's meistens recht lehr auch und vorn/hinten mehr voll.
(vorn/mitte/hinten auf die 2 GB bezogen)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#15

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:54
also wenn ich zb später mal diesen hook mit einbauen will, das ich die tastenanschläge zähle (nicht auslese!) muss ich bei der dll dann auch diese anweisung mit einbauen, das er mehr als 2gb ram nutzt und sonst kommt es zu probleme - right?
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#16

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:57
Nein, wozu?!
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#17

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 13:59
dann hab ich das hier falsch verstanden:

Zitat von himitsu:
Es kommen aber nicht alle Codes mit Pointern über 2GB klar ... du mußt also auch aufpassen, daß alle in deinem Programm (importierte Funktionen, geladene DLLs ...) auch dieses kann, wenn du diese Option aktivierst.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 14:01
Ich denk/hoffe mal nicht, da die DLL ja ihren Speicher auch selber verwaltet (meistens).

Aber wozu willst du dieses Flag überhaupt setzten?
Es kommt ja nicht gerade oft vor, daß ein Programm überhaupt mal den 2 GB-Adressraum voll ausnutzt.

Na gut, ich hatte mal in 'nem Testprogramm "virtuell" die 2 GB vollgemacht und das bei nur 0,7 GB RAM+PageFile, aber dat war ja och nur 'ne Ausnahme ._.

[add]
es muß nicht aktiviert sein ... die DLL muß es nur verstehen/behandeln können, wenn sie mal auf speicher deiner EXE zugreift.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von easteregg
easteregg

Registriert seit: 26. Mär 2005
174 Beiträge
 
#19

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 14:13
ich brauch gar nichtsoviel ram, ich will ja nur die auslastung auslesen! (minimiert brauch mein programm unter einem MB )

das brauch ich für mein tool (siehe signatur ) - und da gestern mein server kaputt gegangen ist, hab ich seinen ram mit in meine workstation gebaut und komme so auf 2,5gb, und da ist mir der fehler aufgefallen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#20

Re: Ramauslastung (bei ramgrößen >2gb)

  Alt 20. Mai 2006, 14:24
aber dafür brauchst du dieses Fläg doch nicht

Delphi-Quellcode:
var
  memory: TMemoryStatus;
begin
  memory.dwLength := SizeOf(memory);
  GlobalMemoryStatus(memory);
  memtotal := Cardinal(memory.dwTotalPhys) / 1024 / 1024;
  memavail := Cardinal(memory.dwAvailPhys) / 1024 / 1024;
  memused := Cardinal(memory.dwMemoryLoad) / 1024 / 1024;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
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