1
ch2 2021 年 12 月 24 日
先 del 再 gc.collect()内存就会回收的,内鬼可能是别的对象
|
2
keepeye 2021 年 12 月 24 日
del x 之后用 gc.is_finalized(x)看下是不是 True
|
3
ipwx 2021 年 12 月 24 日
不懂,你在循环里 del x 岂不是没用了,这循环到底干嘛的。。
|
4
ipwx 2021 年 12 月 24 日
In [4]: for i in range(10000000000):
...: if i % 10000 == 0: ...: del x ...: gc.collect() ...: x = [] ...: else: ...: x.append(i) 这个我验证不会爆内存 |
5
liuxingdeyu OP |
6
ixuuux 2021 年 12 月 24 日 via iPhone
尝试把 del x 改为 x.clear()
|
7
jones2000 2021 年 12 月 25 日
把循环放到函数里面这样, 函数结束应该就会自动释放函数内使用的局部变量。
def fun(): x = [] for i in range(10000000000): x.append(i) while True: fun() |
8
ipwx 2021 年 12 月 25 日
@liuxingdeyu 好吧,那我更正我的说法。我的程序始终稳定在 0.3MB 内存不会增长。所以是删干净了
|
9
liuxingdeyu OP |