Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: FastXMM - Speicher Manager

  Alt 1. Sep 2005, 11:42
Ich habe nicht gesagt, das der unbedingt besser ist. (weshalb auch noch das FastMM im Namen mit drin ist)

Die Hauptfunktionen sind zu denen von FastMM fast gleich.
Ich hab "nur" meinen alten MM durch diesen ersetzt, weil Fast MM im Grunde genommen nicht schlecht ist.

Allerdings ist diese Version dahingehend einfacher, weil man hier nichts mehr einstellen muß.
Der Kleine ist von haus aus Multithreadfähig, abeitet im kompletten Prozess und über Modulgrenzen hinweg.

Die größten Veränderungen sind aber:
* eine etwas andere Art der Registrierung, und Nutzung der selben Resourcen in verschiedenen Modulen
* die Fehler, welche bei der Vewendung von Packages entstehen könnten, sind bei mir anders gelöst, als bei FastMM
* die reservierten Speicherblöcke des MM's werden bei mir angezeigt ... im FastMM ist die Anzeige nur vorgesehen, aber nicht vorhanden
* dass die Speicherblöcke etwas anders unterteilt sind und 'ne andere (Speicher)Kopierfunktion vorhanden ist, ist ja nicht all zu wichtig
und dann sind da noch ein paar andere winzige Veränderungen mit drin, welche aber nicht so auffallen .

(die komplette Version im UCC auch noch ein paar spezielle Anpassung an's UCC mit drin, allerdings ist dieses erstmal noch nicht so von Bedeutung.)


Ich würde halt gern wissen, ob es irgendwo Probleme mit diesem MM gibt.
Und normaler Weise sollte es keine "Single-Version" davon geben, aber zum Testen hab ich diese Unit mal extrahiert.

Und wie mir dann im nachhinein aufgefallen ist, kann man diese Version dann auch verwenden, um ein(e) Programm/DLL mit UCC und aktiviertem MM mit 'nem anderen Modul (Programm/DLL) ohne UCC zu verbinden.




[add]
Ach ja, ich hab an den Units noch 'ne Kleinigkeit geändert,
unter anderem kann man jetzt auch im Usage Tracker mit den Cursotasten, den Tasten des Nummernblocks, oder den WASD-Tasten navigieren (die 5 springt zur Mitte der Trackers)


[add2]
Hab doch noch 2 "Fehlerchen" entdeckt.

Manchmal ist Delphi's Compiler gemein und seine "eigenwillige" Behandlung von [ ] ist nicht immer das Wahre, vorallem wenn dadurch offentsichliche Fehler von ihm nichtmal erkannt und angezeigt werden.

Ich wollte doch nur InstanceCount ändern und der machte, bei folgendem Code, was anderes -.-''
Code:
ASM
  MOV    &B, 0
[color=red] LOCK   DEC [&MemoryManagerData].TMemoryManagerData.InstanceCount[/color]
  JNZ    @noFree
  INC    &B
  @noFree:
End;
So ist's besser ^^
(!!! in der Prozedur UninstallMemoryManager entsprechend ändern)
Code:
ASM
  MOV    &B, 0
[color=red] MOV    EAX, &MemoryManagerData
  LOCK   DEC [EAX].TMemoryManagerData.InstanceCount[/color]
  JNZ    @noFree
  INC    &B
  @noFree:
End;
Ach ja, und dann hatte ich doch tatsächlich zuviel genfernt.
Also, in die Prozedur InstallMemoryManager muß der markierte Teil rein -.-''
Code:
If MMWindow = 0 Then Begin
  MMWindow := CreateWindowExA(0, 'STATIC', @PIDS, $80000000{WS_POPUP}, 0, 0, 0, 0, 0, 0, PID, nil);
  Initialize;
  MemoryManagerData := @MasterMemoryManagerData;
  SetWindowLongA(MMWindow, -21{GWL_USERDATA}, LongInt(MemoryManagerData));
End Else [color=red]Begin[/color]
  MemoryManagerData := PMemoryManagerData(GetWindowLongA(MMWindow, -21{GWL_USERDATA}));
[color=red] ASM
    MOV    EAX, &MemoryManagerData
    LOCK   INC [EAX].TMemoryManagerData.InstanceCount
  End;
End;[/color]

die neue Version ist natürlich oben drin
Und dass ich jetzt endlich mal die neueren Usage Tracker Funktionen einbauen konnte, erwähne ich ihr auch nur mal ganz kurz. ^^
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat