I cannot reproduce this issue using a simple CUDAtensor:
l = [torch.randn(1, device='cuda')]

for i in range(100):
    print('iter{}, mem allocated {}MB'.format(i, torch.cuda.memory_allocated()/1024**2))
    l.pop()
    l.append(torch.randn(1, device='cuda'))

and will get the same memory usage.
However, based on your comment:
# Model does something

I guess that var1 and var2 might be created by the model. If that’s the case, note that each tensor could still be attached to the computation graph, so that not only the tensor itself, but the entire graph would be stored in the lists, if you don’t detach() these tensors.