![]() |
Re: Ramauslastung (bei ramgrößen >2gb)
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. |
Re: Ramauslastung (bei ramgrößen >2gb)
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!). |
Re: Ramauslastung (bei ramgrößen >2gb)
Zitat:
(irgendwie ist das thema grad nen bömischer wald für mich ;) ) |
Re: Ramauslastung (bei ramgrößen >2gb)
Zitat:
(vorn/mitte/hinten auf die 2 GB bezogen) |
Re: Ramauslastung (bei ramgrößen >2gb)
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?
|
Re: Ramauslastung (bei ramgrößen >2gb)
Nein, wozu?!
|
Re: Ramauslastung (bei ramgrößen >2gb)
dann hab ich das hier falsch verstanden:
Zitat:
|
Re: Ramauslastung (bei ramgrößen >2gb)
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. |
Re: Ramauslastung (bei ramgrößen >2gb)
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! |
Re: Ramauslastung (bei ramgrößen >2gb)
aber dafür brauchst du dieses Fläg doch nicht :zwinker:
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:17 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