您的位置:首页技术文章
文章详情页

java - Activity中的成员变量被赋值之后,Activity被回收的时候内存才会被释放吗

【字号: 日期:2024-02-01 14:38:43浏览:16作者:猪猪

问题描述

Activity中的成员变量被赋值之后,Actiity被回收的时候内存才会被释放吗java中一个类中的成员变量被赋值之后,这个类对象被回收时,类中得成员变量才会被释放内存吗

问题解答

回答1:

这个问题应该归类到Java下. 只要是Activity所属的对象被static持有了, 那就导致整个Activity一直存在在内存中. 除非使用WearReference.

下面是一段类似的错误代码演示:

private static Context sContext;public static void setContext(Context context) { sContext = context;}

如果使用AndroidStudio, 那么IDE会有一段警告提醒: 不要赋值Context对象给static变量.

回答2:

问题描述不清楚, 标点符号都没有差评. 但是试一下回答:全局对象应该只被static修饰符修饰的变量, static 修饰后的变量, 属于这个类(class), 或者说改类对应的所有对象, 而不属于某个对象. 从这个推导一下, 应该能认识到一个对象被回收就引起static被回收是不对的(被回收了其他对象怎么用)这里说到了Activity, 再扩展一下. 一般情况下, 使用static变量引用当前对象是可以的(比如单例模式), 但是Android的设计上, Activity不是一般的类, 它有自己的生命周期, 到期就要被回收(因为功能太强大, 占用内存太对). 所以就有了用static引用当前Activity报内存泄漏的问题.

标签: java