【问题标题】:Datasnap REST Server increasing memory usage: How to free memory of ServerMethods results?Datasnap REST Server 增加内存使用量:如何释放 ServerMethods 结果的内存?
【发布时间】:2020-03-16 22:02:47
【问题描述】:

在 Delphi XE10 Datasnap REST 项目中使用 TFDJSONDataSets 将数据集传输到客户端。

生命周期:服务器

问题是:每次调用的服务器内存使用量都会增加,我没有找到释放数据集内存内存的解决方案。

例子:

服务器端:

function TServerMethods1.GetSomeDataSet: TFDJSONDataSets;  
var mt: TFDMemTable;
begin
  mt:= TFDMemTable.Create(nil); 
  result:= TFDJSONDataSets.Create;
  //load mt data...
  TFDJSONDataSetsWriter.ListAdd(result, mt);
end;

客户端

function TClientModule1.GetSomeDataSet: TFDMemTable;
var ds: TFDJSONDataSets;
begin
  result:= TFDMemTable.Create(nil);  
  ds:= ServerMethodsClient.GetSomeDataSet();
  result.AppendData(TFDJSONDataSetsReader.GetListValue(ds, 0));
  result.Open;
end;

每次调用 TServerMethods1.GetSomeDataSet 都会增加 App Server 的内存使用量。修复它的正确方法是什么?

谢谢

【问题讨论】:

    标签: rest memory-leaks delphi-xe datasnap


    【解决方案1】:

    请释放使用过的 MemoryTable。

    function TServerMethods1.GetSomeDataSet: TFDJSONDataSets;  
    var mt: TFDMemTable;
    begin
      mt:= TFDMemTable.Create(nil); 
      try
        result:= TFDJSONDataSets.Create;
        //load mt data...
        TFDJSONDataSetsWriter.ListAdd(result, mt);
      finally
        mt.free
      end;
    end;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 2015-12-25
      • 2013-06-30
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多