在这个例子中,每次我按下“Click”,都会分配 50M 的内存。它永远不会被回收,我可以推送 30 个页面并占用 1.5GB,尽管导航堆栈上只有 1 个页面。GC 永远不会启动。这是怎么回事?
Flutter (Channel master, 2.1.0-11.0.pre.122, on Microsoft Windows [Version 10.0.18363.1440], locale en-US)
void main() {
runApp(MaterialApp(
home: MemoryTest(),
));
}
class MemoryTest extends StatelessWidget {
final List<EdgeInsets> insets = List.generate(
1000000,
(index) => EdgeInsets.all(0),
);
@override
Widget build(BuildContext context) {
return Container(
color: Colors.white,
child: Column(
children: [
OutlinedButton(
child: Text("CLICK"),
onPressed: () {
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (_) => MemoryTest(),
));
},
),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 -1
你应该将 ListItem 移动到函数构建中
class MemoryTest extends StatelessWidget {
@override
Widget build(BuildContext context) {
final insets = List.generate(
1000000,
(index) => EdgeInsets.all(0),
);
return Container(
color: Colors.white,
child: Column(
children: [
OutlinedButton(
child: Text("CLICK"),
onPressed: () {
Navigator.of(context).pushReplacement(MaterialPageRoute(
builder: (_) => MemoryTest(),
));
},
),
],
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
246 次 |
| 最近记录: |