我们正在尝试使用 TAmazonConnectionInfo 和 TAmazonStorageService 演示连接 Amazon AWS S3。连接完美。我们可以列出存储桶、列出存储桶文件以及下载和上传文件……但是 EureakLog 使用 AWS S3 演示报告了内存泄漏。Marko Cantu 的原始演示在 FormCreate 中创建了 TAmazonStorageService,但没有在 FormDestroy 中处置 TAmazonStorageService。
观察到内存泄漏后,我们将 TAmazonStorageService 设置为 nil,然后在 FormDestroy 中释放它,但 EurekaLog 仍然报告内存泄漏并指向 s3Service := TAmazonStorageService.Create(AmazonConnectionInfo1);
这里有什么问题吗?是否必须处理其他东西以防止内存泄漏?
procedure TS3ClientForm.FormCreate(Sender: TObject);
begin
AmazonConnectionInfo1.AccountName := 'XXXXXXXXXXXXXXXXXXXXXX';
AmazonConnectionInfo1.AccountKey := 'KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK';
Caption := AmazonConnectionInfo1.StorageEndpoint;
{ Create an s3Service }
s3Service := TAmazonStorageService.Create(AmazonConnectionInfo1);
end;
procedure TS3ClientForm.FormDestroy(Sender: TObject);
begin
{ Free the s3Service }
s3Service := nil;
s3Service.Free;
end;