I tried to load a large pickle file named m.pkl (about 81M) for several times. After loaded each time, the memory usage continuously increased. But if I add m = None before loading, the memory usage became normal. Why?
#!/usr/bin/env python3
import pickle
from memory_profiler import profile
m = None
def do():
global m
# m = None
with open('./m.pkl', 'rb') as f:
m = pickle.load(f)
@profile
def main():
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
do()
main()
Line # Mem usage Increment Line Contents
================================================
17 12.1 MiB 12.1 MiB @profile
18 def main():
19 406.7 MiB 394.6 MiB do()
20 615.4 MiB 208.7 MiB do()
21 615.5 MiB 0.1 MiB do()
22 683.0 MiB 67.5 MiB do()
23 676.4 MiB 0.0 MiB do()
24 678.4 MiB 1.9 MiB do()
25 694.5 MiB 16.1 MiB do()
26 694.8 MiB 0.3 MiB do()
27 694.8 MiB 0.0 MiB do()
28 696.0 MiB 1.3 MiB do()
29 697.4 MiB 1.4 MiB do()
30 698.0 MiB 0.5 MiB do()
31 695.7 MiB 0.0 MiB do()
32 696.1 MiB 0.4 MiB do()
33 699.0 MiB 2.8 MiB do()
34 698.4 MiB 0.0 MiB do()
35 706.4 MiB 8.0 MiB do()