java - 为什么在Android中使用Activity的简单示例会导致内存泄漏?
问题描述
我得到了以下示例,但我不确定为什么这会导致内存泄漏?我不能把头绕过去?!
public class MyLeakActivity extends Activity {
// static reference to evil
private static final Evil e;
public MyLeakActivity() {
e = new Evil();
}
private final class Evil {
}
}
提前致谢。
问候费边
解决方案
看看这里……这篇文章是针对Android开发的。
https://dzone.com/articles/a-troublesome-legacy-memory-leaks-in-java
- 避免在您的活动中使用非静态内部类,使用静态内部类并创建弱引用。
我认为您的设计可能永远不允许封闭类被 gc'd。除非您有充分的理由使用非静态内部类(可能出于范围原因),否则一个好的经验法则是始终从声明为静态的内部类开始。
推荐阅读
- php - 如何使用 PHP 从 URL 获取 JSON 数据?我收到身份验证失败
- mysql - 如何将shell脚本变量作为OUT参数传递给mysql存储过程?
- javascript - Node.js Handlebars {{object}} 不在 {{each}} 循环内渲染,而是在循环外渲染(以及其他 {{object_names}} 在循环内渲染)
- angular - 如何在 Angular Element 中使用 Angular 组件?
- node.js - UnhandledPromiseRejectionWarning:未处理的承诺拒绝。MongoNetworkError:无法连接到服务器 [localhost:27017]
- javascript - VSCode 中的 TypeScript 错误:“无法写入文件‘x’,因为它会覆盖输入文件。”
- python - 字典循环获取每个值
- docker - Docker:内部端口
- excel - 如何选择下拉 VBA 并单击它
- visual-studio-code - 如何从集成终端分离 docker 容器(发送 [CTRL + P CTRL + Q]