关于python内存回收的问题,求解

jbl125697176 2018-11-28 07:28:52
我在线程中创建了一个dict,然后添加了大量元素进去。当外部调用该线程执行完毕后,发现内存并没有被回收,这是什么原因?
问题1:线程执行完毕后,内部资源不是自动回收的吗,需要手动删除dict?如果线程内处理比较复杂,很多对象相互引用,如何删除?
问题2:手动执行gc.collect()后,内存仍然没有回收,需要如何操作?
...全文
518 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
a616781689 2019-01-01
  • 打赏
  • 举报
回复
引用 6 楼 jbl125697176 的回复:
[quote=引用 5 楼 a616781689 的回复:] 没有有相互引用 如果有相互引用没有外部引用这种情况会在 适当情况下被标记清除策略删除
适当情况是什么情况,有阀值存在,还是什么?[/quote] 有阈值 阈值的是创建的对象和删除对象的差 大于一个值就会进行标记清除 ,当然python把标记清除分成了三代,对于老对象阈值大,对于新对象阈值小
jbl125697176 2018-12-12
  • 打赏
  • 举报
回复
引用 5 楼 a616781689 的回复:
没有有相互引用 如果有相互引用没有外部引用这种情况会在 适当情况下被标记清除策略删除

适当情况是什么情况,有阀值存在,还是什么?
a616781689 2018-12-05
  • 打赏
  • 举报
回复
没有有相互引用 如果有相互引用没有外部引用这种情况会在 适当情况下被标记清除策略删除
smith6036 2018-12-04
  • 打赏
  • 举报
回复
弱引用应该可以
jbl125697176 2018-12-02
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
可以del dict手动删除试试
然后就是是否有什么地方引用了,导致不能回收


哥,主要是一个dict,里面子元素在其他地方还会用到,就是相互关系很复杂,不好直接del,有没有其他好的方法吗,或者python可以在线程结束时,自己回收掉?
oyljerry 2018-11-30
  • 打赏
  • 举报
回复
可以del dict手动删除试试
然后就是是否有什么地方引用了,导致不能回收
jbl125697176 2018-11-30
  • 打赏
  • 举报
回复
没人吗????

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧