When you are trying to release the object, make sure that you set the query object to null. When you set it to null, it will release the memory for sure. But the scope also plays a role, so make sure it is local to the procedure.
Please find a sample snippet for reference
myFunction := TSAPFunctions.Create; myFunction.Connection := FConnection; myFunction.RemoveAll; myQuery := mySAPFunction.Add('interface here'); myQuery.Call; myQuery := null; // will clear the memory
Hope this helps!