Does moving the pooling layer from the model definition (in the constructor) to the forward method bring any advantage in terms of memory consumption?

The answer is indeed no.
I’m not familiar how torchsummary works, bu it might indeed be an artefact of it.

While I have you here, may I also ask if there is any simple way of measuring/estimating the memory spent by a model in Pytorch while doing a forward/backward pass?

Whatever is your favorite package to measure cpu memory usage in python.
For CPU code, I would recommend python memory-profiler 2 as it gives very nice outputs.
For GPU code, it is trickier because of both the asynchronous nature of cuda ops and the caching allocator we use. In that case, you can use our own functions to get the used GPU memory and cuda synchronization to get readings manually at different points of your code.