V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wildnode
V2EX  ›  React

有没有大佬知道 React 这种内存泄漏可能是什么原因导致的?

  •  
  •   wildnode · 126 天前 · 2638 次点击
    这是一个创建于 126 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司让排查性能问题,看了一天了也没啥头绪...

    有没有大佬知道这种情况有可能是啥原因导致的

    我初步怀疑可能是多个 hooks 之间的循环依赖问题,但是代码翻了一天也没找到啥蛛丝马迹,搜索引擎上也找不到啥有深度的排查内存泄漏的文章,都是些套话,全局变量,事件、定时器未移除啥的,心累...

    https://i.imgur.com/SFGwfMX.png

    13 条回复    2024-07-18 20:36:07 +08:00
    douxc
        1
    douxc  
       126 天前
    devtools 记录内存快照,然后根据数据分析;猜的话太难了
    asdjgfr
        2
    asdjgfr  
       126 天前
    NessajCN
        3
    NessajCN  
       126 天前
    等我开水晶球给你算一卦
    chenliangngng
        4
    chenliangngng  
       126 天前
    按照我以前的经验,可以用二分法定位到有问题的代码位置
    stew5566
        5
    stew5566  
       126 天前
    看起来是深层级的数据引起的多层调用,有树结构的 observe ?
    CatchXS
        6
    CatchXS  
       126 天前
    用二分法查一下吧,感觉像是某个变量一直没有释放掉。
    wangcheng
        7
    wangcheng  
       126 天前
    上点代码呗
    particlec
        8
    particlec  
       126 天前
    有点像对象循环引用
    3uncle
        9
    3uncle  
       126 天前
    memoizedState 没初始化吧?
    lovelylain
        10
    lovelylain  
       125 天前 via Android
    回退历史代码,看看哪次修改引入的,再分析改动
    tcper
        11
    tcper  
       125 天前
    导致内存泄露归根到底就是这几个原因:全局变量,事件、定时器未移除
    只是你代码里哪里全局变量,哪里的事件未移除需要你自己找
    txzh007
        12
    txzh007  
       125 天前
    内存快照看一下是什么内容占用的,凭感觉八成是字符串
    duhbbx1119
        13
    duhbbx1119  
       125 天前   ❤️ 1
    最近在排查使用 vue2 写的业务代码的问题,同事教我排查的,操作前快照一次,操作后快照一次,比较这两次操作之间的 哪些对象没释放
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4736 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 09:48 · PVG 17:48 · LAX 01:48 · JFK 04:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.