Dein Record welcher die Daten hält, enthält diese lange Strings?
Wenn ja musst du diese per Hand freigegeben, da Delphi den Speicher des Records nicht selbst verwaltet und daher die String nicht freigeben kann.
Ich verweise nochmal auf den Code im OnFreeNode Event
Delphi-Quellcode:
procedure TForm1.VSTFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode);
var
Data: PTreeData;
begin
Data := Sender.GetNodeData(Node);
Finalize(Data^);
end;
Das Finalize sorgt dafür, dass auch Strings, dynamische Arrays, etc. im verwendeten Record freigegeben werden.