Hi,
First a bit more context.
In python, the same object can be used at multiple places and be referenced.
t = torch.rand(10) # Here we create a Tensor
l = [t] # Here the list contains the same Tensor
print(t) # t is accessible
del t # We delete t
print(l[0]) # The other reference to t is still valid and t was not freed.

Same thing the other way
t = torch.rand(10) # Here we create a Tensor
l = [t] # Here the list contains the same Tensor
print(t) # t is accessible
del l # We delete the list that contains the reference to t
print(t) # t still exists

The buffers we save in the computational graph are like in the example above when I save a reference to t in a list.

Freeing the buffers mean deleting the reference held by the computational graph to these buffers. You cannot access them from the computational graph. But other references are still valid.
We don’t have an api to check this. But the backward will delete all the saved buffers.
If you already hold onto another reference they won’t be freed. If you want to keep the reference stored in the graph, you need to pass the keep_graph=True argument to the backward function.

Let me know if you want more details.