如何知道一段代码没有内存泄漏?假如一个函数 cache 了返回值,算不算内存泄露呢?? Python 中内存泄漏的标准又是什么??百度了很多文章都没搞懂,求帮助

2021-06-15 20:21:33 +08:00
 0x0208v0
2183 次点击
所在节点    Python
13 条回复
SingeeKing
2021-06-15 20:30:47 +08:00
valgrind 你值得拥有
dingwen07
2021-06-15 20:33:18 +08:00
python 会自动销毁没有引用的对象,所以不会泄露
ila
2021-06-15 20:35:37 +08:00
纯 python 不会,调用 sdk 或 dll 或.so 时要小心
abersheeran
2021-06-15 20:48:31 +08:00
内存泄漏,就是程序中出现了非设计内的内存使用。

比如你给出一个 Python 函数的默认参数值是 `[]`,然后你又在函数内部直接往这个 list 增加内容了,导致这个列表占用的内存大小不断上升,且永不会被 Python GC 机制回收。这就是一种常见的 Python 程序内存泄漏情况。
AkideLiu
2021-06-16 01:54:00 +08:00
valgrind 可惜现在 bug sir 还没适配。之前 10.15 的时候 clion 陪 valgrind,memory leak 一抓一个准真好用
mingl0280
2021-06-16 07:27:14 +08:00
我以为你在说 C/C++,valgrind+address sanitizer 解决一切问题
zmxnv123
2021-06-16 09:04:47 +08:00
百度了很多文章来搞懂什么是 python 的内存泄露???
百度: 太看得起我了
zmxnv123
2021-06-16 09:06:16 +08:00
ch2
2021-06-16 11:52:39 +08:00
申请的内存脱离了代码的控制范围,如果进程不退出永远没法释放
lewinlan
2021-06-16 12:06:27 +08:00
说纯 python 不会的,建议再学学
ilucio
2021-06-16 17:40:32 +08:00
看下 Python 的 GC 是怎么回收对象的,如果一直不能被回收那就算泄露了
myCupOfTea
2021-06-17 08:54:18 +08:00
@lewinlan 是的,如果光 cache 不清除,然后 cache 不存在上限照样溢出,推荐楼主直接用 lru_cache
Leigg
2021-06-17 09:43:54 +08:00
存在没有错,但得经过我的允许,否则一律算泄露。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/783580

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX