公司让排查性能问题,看了一天了也没啥头绪...
有没有大佬知道这种情况有可能是啥原因导致的
我初步怀疑可能是多个 hooks 之间的循环依赖问题,但是代码翻了一天也没找到啥蛛丝马迹,搜索引擎上也找不到啥有深度的排查内存泄漏的文章,都是些套话,全局变量,事件、定时器未移除啥的,心累...
![]() |
1
douxc 2024-07-18 15:01:23 +08:00
devtools 记录内存快照,然后根据数据分析;猜的话太难了
|
![]() |
2
asdjgfr 2024-07-18 15:03:26 +08:00
|
3
NessajCN 2024-07-18 15:17:46 +08:00
等我开水晶球给你算一卦
|
4
chenliangngng 2024-07-18 15:20:07 +08:00
按照我以前的经验,可以用二分法定位到有问题的代码位置
|
5
stew5566 2024-07-18 15:26:36 +08:00
看起来是深层级的数据引起的多层调用,有树结构的 observe ?
|
![]() |
6
CatchXS 2024-07-18 16:27:42 +08:00
用二分法查一下吧,感觉像是某个变量一直没有释放掉。
|
![]() |
7
wangcheng 2024-07-18 16:42:30 +08:00
上点代码呗
|
![]() |
8
particlec 2024-07-18 16:48:15 +08:00
有点像对象循环引用
|
9
3uncle 2024-07-18 16:50:15 +08:00
memoizedState 没初始化吧?
|
10
lovelylain 2024-07-18 19:47:35 +08:00 via Android
回退历史代码,看看哪次修改引入的,再分析改动
|
![]() |
11
tcper 2024-07-18 20:17:09 +08:00
导致内存泄露归根到底就是这几个原因:全局变量,事件、定时器未移除
只是你代码里哪里全局变量,哪里的事件未移除需要你自己找 |
![]() |
12
txzh007 2024-07-18 20:31:32 +08:00
内存快照看一下是什么内容占用的,凭感觉八成是字符串
|
13
duhbbx1119 2024-07-18 20:36:07 +08:00 ![]() 最近在排查使用 vue2 写的业务代码的问题,同事教我排查的,操作前快照一次,操作后快照一次,比较这两次操作之间的 哪些对象没释放
|