我需要释放TJSONArray的实例吗?



答案显然是肯定的,但我的这段代码已经运行了将近一个月,现在 24/7 全天候运行,一切都很好。这是代码:

var
jsonArray : TJSONArray;
jsonValue : TJSONValue;
json : string;
begin
json := 'JSON_MASTER';
jsonArray := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(json), 0) as TJSONArray;
for jsonValue in jsonArray do
begin
// do the thing 1
end;
json := 'JSON_DETAIL';
jsonArray := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(json), 0) as TJSONArray;
for jsonValue in jsonArray do
begin
// do the thing 2
end;
end;

该应用程序是一个 Web 服务 (SOAP(。该函数每天执行约 2K。我知道代码中的问题,但由于 SOAP 没有崩溃,我还没有修复它。任务管理器性能报告显示正常。没有内存使用量增长的迹象。为什么没有内存泄漏的迹象?TJSONArray中有垃圾收集之类的东西吗?

这取决于您运行的平台。

如果您的应用程序在非 ARC 平台上运行,例如 Windows 或 OSX,那么是的,您需要在使用完后手动释放TJSONArray,否则它将被泄露。

如果您的应用程序在 ARC 平台上运行,例如 iOS、Android 或 Linux,则不,您无需在使用完TJSONArray后手动释放它,因为当对它的所有引用都超出范围时,它将自动释放。

最新更新