Ich suche derzeit nach einem Weg um ein offensichtliches Speicherleck in der Mac-Implementierung des REST-Clients. Der Code zu erzeugen, der Speicherverlust ist folgende (Lauf XE8, aktualisiert 1):Delphi REST mac Speicherleck
program mac_REST_leak_test;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, REST.Client, REST.Types, IPPeerClient;
var
request : TRestRequest;
ii, iMax : integer;
begin
iMax := 1;
for ii := 0 to iMax do
begin
request := TRestRequest.Create(nil);
// Fake Online REST API for Testing and Prototyping
request.Client := TRestClient.Create('http://jsonplaceholder.typicode.com/');
request.Method := rmPOST;
request.Execute();
request.Client.Free();
request.Free();
end;
end.
Dies ist der kleinste Code-Block ist, dass das Leck zeigt. Im Wesentlichen habe ich einen Synchronisierungsdienst, der gelegentlich REST-Anforderungen stellt.
Wenn ich dies unter Windows mit MadExcept ausführe, werden keine Lecks gefunden. Wenn Sie den laufenden Prozess in ProcessMonitor überprüfen, erhöht sich die Speicherkapazität nicht.
Bei Ausführung auf einem Mac zeigt der Aktivitätsmonitor jedoch an, dass der der App zugewiesene Speicher weiterhin steigt. Bei der Verwendung von Instru- menten scheint es außerdem Probleme mit mehreren URL- und HTTP-Klassen auf dem Mac zu geben.
Weiß jemand, wie man dieses Leck auflöst?
(Nebenbei, es wäre wirklich hilfreich zu wissen, wo genau das Leck von Mac kommt, aber die einzigen aufgeführten Delphi-Klassen sind die TMethodImplementationIntercept. Ich bin der Meinung, dass dies aufgrund der Tatsache ist, dass Delphi keine DSYM Datei für Mac zu erzeugen. Wenn jemand einen Weg, um das weiß, dass wäre genial!)
UPDATE von iMax
von 1 bis 10 variieren und die FastMM4 Ausgabe vergleicht, scheint es, dass die Leck ist in der Klasse Macapi.ObjectiveC.TConvObjID.XForm
. Die 10-Iterationsausgabe enthält 9 weitere Lecks mit dieser als eine Stapelspur im Vergleich zu der 1-Iteration. Ich habe dies Embarcadero als RSP-12242 gemeldet.
BTW 'TMethodImplementationIntercept' ist ** nicht ** eine Klasse –
Existiert FastMM für Mac? Zeigt es detaillierte Leckberichte? –
Bitte melden Sie dies dem Qualitätsportal. –