Echt super! der Speicherverbrauch in der WMIClass.Query() Funktion bleibt jetzt tatsächlich konstant! Allerding habe ich ein zweites speicherleck in der
WMI.pas gefunden (die
unit is wohl voll mit speicherlecks^^)
und zwar in der WMIClass.Connect() Funktion.
Hier mal der code:
Delphi-Quellcode:
Function TWMIClass.Connect(
Const Comp, NameSpace, User, Pass: WideString): Boolean;
Begin
If _WMILocator =
nil Then _WMILocator := TSWbemLocator.Create(
Nil);
Try
_WMIServices := _WMILocator.ConnectServer(Comp, NameSpace, User, Pass, '
', '
', 0,
nil);
Result := True;
Except
Result := False;
_WMIServices :=
nil;
If ExceptObject
is Exception Then
_LastError :=
Exception(ExceptObject).
Message
Else _LastError := '
Unknown Error: ' + ExceptObject.ClassName;
End;
End;
Hmm...ich hab grad nochmal nachgeguckt...ab und zu kommen auch in der
query funktion noch n paar kb hinzu...aber nur noch ganz selten. genauso mit der connect funktion, wobei diese fast immer speicher hinzunimmt. Alles sehr schwankend. Das is wirklich merkwürdig.
Mein export der ganzen geschichte in eine
dll hat auch nicht wirklich was gebracht. ich habe die sache mit der übergabe von strings in die
dll rausgenommen, weil ich dachte es lag evtl daran aber trotzdem steigt der speicherbedarf. Ich versteh das nicht, wenn ich eine
dll wieder freigebe, dann müsste doch auch der speicher den die
dll gebraucht hat wieder frei werden...
Naja ich werd mcih da nochmal n bisschen mit beschäftigen vieleicht finde ich ja noch das problem