java – 活动持有对Singleton泄漏内存的引用?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 活动持有对Singleton泄漏内存的引用?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含908字,纯文字阅读大概需要2分钟。
内容图文
![java – 活动持有对Singleton泄漏内存的引用?](/upload/InfoBanner/zyjiaocheng/965/6f1d089a1bde4b56b870949d28490c20.jpg)
如果我有这样的代码:
public class MyActivity extends Activity
{
private SingletonClass singletonInstance;
...
@Override
protected void onCreate(Bundle savedInstanceState)
{
singletonInstance = SingletonClass.getInstance();
}
...
}
我的理解是,Activity将保持活动状态,因为它具有对静态实例的引用,因此无法进行GC.但是,它似乎并没有给我的应用程序带来任何问题.我不理解GC或者这是否真的泄漏了内存并且我应该避免保留对我的单例类的引用?
解决方法:
研究了你的疑问,我确认了我的答案:
如果您将singletonInstance声明为static,则会发生这种情况.对于您的Activity,singletonInstance只是SingletonClass的一个实例.请记住,没有“静态实例”这样的东西,实例只是给定类的一个对象,使它静态的是你在范围中声明它的方式.对于MyActivity,singletonInstance不是静态的,即使在SingletonClass中你引用同一个对象/实例并且它被声明为静态.
这样,GC可以清除您的活动而不会出现问题.我在Android上有类似的实现,它涉及一个服务,它运行了几百个小时,没有任何内存或性能问题……
问候
内容总结
以上是互联网集市为您收集整理的java – 活动持有对Singleton泄漏内存的引用?全部内容,希望文章能够帮你解决java – 活动持有对Singleton泄漏内存的引用?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。