alibaba / alibaba/flutter_boost

[Bug]:iOS 容器内存泄露 FlutterSDK-3.10.6 FlutterBoost-4.4.0

Open
#1,891 7 comments 0 reactions 0 assignees View on GitHub
Dominant language
Dart
Stars
7.2k
Forks
1.3k
PR merge metrics
No merged PRs in 30d

Description

### 请描述遇到的问题,以及您所期望的正确的结果

问题:
1.使用 FlutterBoost提供的 Demo 工程,在首页 Push 一个 Flutter 容器页面;
2.在 Flutter 容器页面,返回到上一级首页页面,容器 FBFlutterViewContainer 的 dealloc 没调用,内存泄露;
3.再次点击 push Flutter 容器之后,FBFlutterViewContainer 的 dealloc 才被调用;
4.再次从 FBFlutterViewContainer 返回上一级页面,dealloc 没调用,内存泄露;

期望:
1. 容器 FBFlutterViewContainer 的 dealloc 正常调用,内存释放;

### 请说明如何操作会遇到上述问题

1.使用 FlutterBoost提供的 Demo 工程,在首页 Push 一个 Flutter 容器页面;
2.在 Flutter 容器页面,返回到上一级首页页面,容器 FBFlutterViewContainer 的 dealloc 没调用,内存泄露;
3.再次点击 push Flutter 容器之后,FBFlutterViewContainer 的 dealloc 才被调用;
4.再次从 FBFlutterViewContainer 返回上一级页面,dealloc 没调用,内存泄露;

### 在下面填入关键复现代码

- (void)dealloc {
if (self.removeEventCallback != nil) {
self.removeEventCallback();
}
[NSNotificationCenter.defaultCenter removeObserver:self];
_leftEdgeGesture.delegate = nil;
}
以上方法,在 Flutter 容器页面退出时,没有被调用。

### 复现的平台

iOS

### Flutter SDK版本

3.10.6

### FlutterBoost版本

4.4.0

### 是否延迟初始化FlutterBoost

No

### 解决方案

1.在 3.7.0 ~ 3.7.12 的版本,在 FlutterViewController 容器页面退出时,dealloc 会调用,正常释放;
2.猜测和 impller 的引擎有关系;
3.没具体是探究,待后面有时间探究一下;

Contributor guide

No contributing guide indexed for this repository

Research direction

Run the FlutterBoost Demo and reproduce the navigation sequence involving FBFlutterViewContainer, then inspect its dealloc path and the related FlutterViewController lifecycle. Compare the reported behavior on Flutter SDK 3.10.6/FlutterBoost 4.4.0 with 3.7.0–3.7.12; done means the container deallocates and releases memory when leaving the Flutter page.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart, flutter, ios, objective-c
Domain
mobile, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
32/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.