V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
v2exblog
V2EX  ›  Python

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

  •  
  •   v2exblog · 2021-06-15 20:21:33 +08:00 · 2146 次点击
    这是一个创建于 1017 天前的主题,其中的信息可能已经有所发展或是发生改变。
    13 条回复    2021-06-17 09:43:54 +08:00
    SingeeKing
        1
    SingeeKing  
       2021-06-15 20:30:47 +08:00
    valgrind 你值得拥有
    dingwen07
        2
    dingwen07  
       2021-06-15 20:33:18 +08:00 via iPhone
    python 会自动销毁没有引用的对象,所以不会泄露
    ila
        3
    ila  
       2021-06-15 20:35:37 +08:00 via Android
    纯 python 不会,调用 sdk 或 dll 或.so 时要小心
    abersheeran
        4
    abersheeran  
       2021-06-15 20:48:31 +08:00   ❤️ 1
    内存泄漏,就是程序中出现了非设计内的内存使用。

    比如你给出一个 Python 函数的默认参数值是 `[]`,然后你又在函数内部直接往这个 list 增加内容了,导致这个列表占用的内存大小不断上升,且永不会被 Python GC 机制回收。这就是一种常见的 Python 程序内存泄漏情况。
    AkideLiu
        5
    AkideLiu  
       2021-06-16 01:54:00 +08:00 via iPhone
    valgrind 可惜现在 bug sir 还没适配。之前 10.15 的时候 clion 陪 valgrind,memory leak 一抓一个准真好用
    mingl0280
        6
    mingl0280  
       2021-06-16 07:27:14 +08:00 via Android
    我以为你在说 C/C++,valgrind+address sanitizer 解决一切问题
    zmxnv123
        7
    zmxnv123  
       2021-06-16 09:04:47 +08:00 via iPhone
    百度了很多文章来搞懂什么是 python 的内存泄露???
    百度: 太看得起我了
    zmxnv123
        8
    zmxnv123  
       2021-06-16 09:06:16 +08:00 via iPhone
    ch2
        9
    ch2  
       2021-06-16 11:52:39 +08:00
    申请的内存脱离了代码的控制范围,如果进程不退出永远没法释放
    lewinlan
        10
    lewinlan  
       2021-06-16 12:06:27 +08:00 via Android
    说纯 python 不会的,建议再学学
    ilucio
        11
    ilucio  
       2021-06-16 17:40:32 +08:00
    看下 Python 的 GC 是怎么回收对象的,如果一直不能被回收那就算泄露了
    myCupOfTea
        12
    myCupOfTea  
       2021-06-17 08:54:18 +08:00
    @lewinlan 是的,如果光 cache 不清除,然后 cache 不存在上限照样溢出,推荐楼主直接用 lru_cache
    Leigg
        13
    Leigg  
       2021-06-17 09:43:54 +08:00 via Android
    存在没有错,但得经过我的允许,否则一律算泄露。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5302 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 07:16 · PVG 15:16 · LAX 00:16 · JFK 03:16
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.