AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte FastXMM - Speicher Manager
Thema durchsuchen
Ansicht
Themen-Optionen

FastXMM - Speicher Manager

Ein Thema von himitsu · begonnen am 31. Aug 2005 · letzter Beitrag vom 29. Nov 2006
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von himitsu
himitsu
Registriert seit: 11. Okt 2003
So, da haben wir mal meinen Speicher Manager FastX.

Dieser basiert ja zu "größeren" Teilen auf dem FastMM.

Es wäre nett, wenn ihr den kleinen mal Testen könnt.



Der kleine ist(sollte) Multithreadfähig sein und arbeitet auch programmweit, also über DLL's hinweg. (ähnlich wie es die BorlndMM.dll auch macht).


Eingebunden wird der MM genauso, wie jeder "normale" MM auch, indem man die Unit als aller Erste in der Uses-Klausel der DPR einträgt. (siehe Demo)


[Anhang vorrübergehend entfernt 2.7.06]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
 
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#11
  Alt 21. Mai 2006, 18:30
Ich werd dann auf dich zukommen ... es sollte zwar jetzt soweit lauffähig sein, aber ich überarbeitet auch im Moment noch ein paar Teile ^^

PS: das DLL-Problem von oben ... hab da gerade mal as gefunden, also er hat es genau richtig bemerkt
und daher auch ein paar neue Compilerschalter eingeführt AttemptToUseSharedMM und ShareMMIfLibrary.
Zitat:
{Share the MM with other DLLs? - if this DLL is unloaded, then
dependent DLLs will cause a crash.}
PSS:
wer sich schonmal die FastMM4Options.inc angesehn hat, der wird sich freuen, daß mein MM nur 2 dieser Schalter benötigt und dazu noch zwei Variablen für's Debugging
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

 
Delphi 2006 Professional
 
#12
  Alt 22. Mai 2006, 14:41
Kann man mit deinem MM dann

- Strings rundrumschieben
- Objekte rundrumschieben

?

EDIT: Intermodular mein ich natürlich...
Lukas Erlacher
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#13
  Alt 22. Mai 2006, 15:02
Es kann kann im Grunde alles rumgeschoben werden, was einen eigenen Speicherblock besitzt.

Wobei einiges speziell behandelt wird ... so müssen z.B. dynamischen Arrays und AnsiStrings (WideStrings werden ja von der OLE32 verwaltet) extra gehandhabt werden, weil da der Pointer nicht direkt auf den Speicherblock zeigt.

Was genau verschoben werden darf, gibt der Programmierer selber an, wobei in meinem Gesamtprojekt auch schon einige Dinge (unteranderem einige Klassen) sind, welche selber sagen was bei ihnen erlaubt ist.
So ist z.B. in der Exceptionbehandlung das OutOfMemory-Exception-Objekt, welches beim Programmstart initialisiert wird und welches zwar nicht selber verschben werden kann, aber zumindestens der darin enthaltenen String wird von ihm zum verschieben freigegeben.
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

 
FreePascal / Lazarus
 
#14
  Alt 22. Mai 2006, 23:21
Jo ich freu mich schon auf die erste Release Deiner Überarbeitung. Lass Dir Zeit ...
  Mit Zitat antworten Zitat
Gruber_Hans_12345

 
Delphi 2007 Professional
 
#15
  Alt 31. Mai 2006, 14:45
Also ich wollte den auch mal testen.

Aber leider bekomme ich eine Fehlermeldung nach der anderen.
Jetzt werde ich wohl den "normalen" FastMM4 verwenden, der funktioniert bis jetzt ohne Probleme.

Das einzige was mich noch stört sind die Meldungen der Speicherleeks vom Delphi selbst (Hilfssystem usw.)
und das die Auflistung der Leeks usw. nicht so schön wie bei MemCheck ist.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#16
  Alt 31. Mai 2006, 15:24
Wie gesagt, die neue Version ist noch nicht ganz fertig ... eine erste "unfertige" Testversionist an Amnon82 zwar raus, aber selbst wenn die ohne Probleme läuft brauch ich noch ''nen Weilchen.
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

 
FreePascal / Lazarus
 
#17
  Alt 2. Jun 2006, 21:37
Hab Deine zweite unfertige Version getestet. Der Port von D10 auf D9 und D7 klappt super. Läuft alles rund.
Wann gedenkst Du mit einem Borlndmm.dll-Ersatz? Debug-Mode ist noch buggy. FastMM hat probs mit D9PE. Könnte ja sein, dass Dein MM dieses Problem nicht hat.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#18
  Alt 3. Jun 2006, 09:40
Ich werd' wohl ab ende nächster Woche für ein/zwei Wochen genug Zeit haben, um richtig "viel" proggen zu können ... vielleicht schaff ich es da ja ._.

Wie gesagt, ein paar Probleme gibt es ja noch.

Der DebugMode läuft nicht ... wäre schon Nett, wenn man die LogFunktion zur Fehlersuche nutzen könnte, aber leider ist die (noch) mit dem DebugMode verknüpft.

Und dann halt das Problem mit dem UsageTracker ... ich weiß daß es da einen Fehler gib ... nur sieht es bisher danach aus, als wenn der im MemoryManager (GetMem/ReallocMem) liegt und nicht in den Funktionen für diesen Tracker.
Obwohl es natürlich auch an ein paar Komponenten auf der Form liegen könnte.
TStringGrid und Co., obwohl die da zwar demnächt eh rausfliegen, aber der Fehler ist ja dennoch vorhanden. -.-''

Kannst den ja mal aktivieren - bei mir stürtzt der jedenfalls beim Aufruf von := TFastXUsageTracker.Create(nil) (FNS_MemoryUT.pas) ab.
Delphi-Quellcode:
// TestU.pas
Procedure TForm1.FormCreate(Sender: TObject);
  Begin
    ...
    FastXUsageTracker_Show;
  End;
  Mit Zitat antworten Zitat
Benutzerbild von Amnon82
Amnon82

 
FreePascal / Lazarus
 
#19
  Alt 3. Jun 2006, 21:39
http://img384.imageshack.us/img384/5711/stack4ij.png

Zu Deiner Frage aus der PM. Ich bin in Bayern geboren. English hatte ich nur getextet, da ich öfter in englishen Foren schreibe und halt grad so drin war. Ich merk es fast nicht mehr ob ich english oder deutsch schreibe. Ist für mich fast gleich. Passiert mir öfter, dass ich mal english denke und deutsch ausspreche und mich somit verhaue (rechnen). So zurück zum Thema.

Wie du im Screenshot siehts kann ichs auch nicht compilen. Eine Fehlermeldung kommt in dem Sinn nicht bei mir. Delphi weigert sich einfach.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#20
  Alt 5. Jun 2006, 19:31
Also ein Problem hab ich jetzt endeckt ... da suche sich Wochenlang nach 'nem Fehler in meinem MM und dann war der ganz wo anders

Hab mich beim Auslesen der ResourceStrings an den Code aus der System.pas gehalten (nur halt alles nach Unicode umgestellt und jetzt stellte sich raus, daß dieser Code nicht funktioniert und in der System.dcu von Borland wieder alles nach LoadString umgeleitet wurde, weil die es selbst nicht hinbekommen hatten den Code in der System.pas um laufen zu bringen (in D7 wohlgemerkt und ich hab mal in die System.dcu von D2006 geguckt, da haben die das Problem auch noch nicht hinbekommen ... na ja, jetzt hab ich das mal hinbekommen und zumindestens ein Fehler ist weg ^^)
  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 08:52 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