答案显然是肯定的,但是我有这段代码已经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中是否有垃圾回收之类的东西?
答案 0 :(得分:3)
如果您的应用程序在非ARC平台(例如Windows或OSX)上运行,则为是,则在使用完TJSONArray
后,您需要手动释放它们,否则它会泄漏。 / p>
如果您的应用程序在ARC平台(例如iOS,Android或Linux)上运行,则为否,您无需在使用完TJSONArray
后手动释放它,因为它会被释放当所有对它的引用都超出范围时,它会自动生成。