笔者在pytorch论坛看到一段代码,源代码中调用了两次model,在测试时笔者发现调用多次model的结果仍然如此。
经过ptrblck大神的解答,似乎是pytorch中有缓存的策略,可以将变量使用到的内存留在缓存池中重复使用。
PyTorch 会在后台管理内存池(memory pool)。当你删除或覆盖一个变量时,PyTorch 并不会立即将这块内存归还给操作系统,而是将其加入到缓存中,以便后续再分配给其他变量。这样,后续的内存分配可以直接从缓存中拿到空闲内存,从而避免了频繁的内存分配和释放,提升了程序的性能。
这就相当于在内存上加了一层pytorch的内存池,原来使用完直接释放的模式变为了使用后通过内存池再释放的模式。