Tôi hiện đang tìm kiếm một cách xung quanh một rò rỉ bộ nhớ rõ ràng trong việc thực hiện Mac của máy khách REST. Mã để tạo rò rỉ bộ nhớ là như sau (chạy XE8, cập nhật 1):Delphi REST rò rỉ bộ nhớ mac
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.
Đây là khối mã nhỏ nhất thể hiện sự rò rỉ. Về cơ bản, tôi có một dịch vụ đồng bộ khiến cho các yêu cầu REST thường xuyên như vậy.
Khi tôi chạy ứng dụng này trên Windows, sử dụng MadExcept, không tìm thấy rò rỉ nào. Kiểm tra quá trình đang chạy trong ProcessMonitor cho thấy không tăng số lượng bộ nhớ đang được sử dụng.
Khi chạy trên máy Mac, Trình giám sát hoạt động cho thấy bộ nhớ được cấp cho ứng dụng tiếp tục tăng. Hơn nữa, khi chạy bằng cách sử dụng dụng cụ, có vẻ như là rò rỉ đối phó với một số URL và các lớp HTTP trên mac.
Có ai biết cách giải quyết sự rò rỉ này không?
(Là một sang một bên, nó sẽ thực sự hữu ích để biết chính xác nơi rò rỉ đến từ trên máy Mac, nhưng chỉ có Delphi lớp được liệt kê là TMethodImplementationIntercept.Tôi tin rằng điều này là do thực tế là Delphi không tạo ra một tập tin dSYM cho Mac. Nếu ai biết một con đường xung quanh rằng, điều đó sẽ thật tuyệt vời!)
CẬP NHẬT Bằng cách thay đổi iMax
1-10 và so sánh sản lượng FastMM4, dường như các rò rỉ là trong lớp Macapi.ObjectiveC.TConvObjID.XForm
. 10 đầu ra lặp lại chứa thêm 9 rò rỉ với điều này như là một dấu vết stack so với 1 lần lặp. Tôi đã báo cáo điều này với Embarcadero là RSP-12242.
BTW 'TMethodImplementationIntercept' là ** không ** một lớp –
FastMM có tồn tại cho Mac không? Nó có trình bày báo cáo rò rỉ chi tiết không? –
Vui lòng báo cáo điều này với cổng thông tin chất lượng. –