Android开发中静态变量的生命周期

  次阅读 作者:智能小宝 来源:互联网 2016-01-19 12:39 我要评论(0)

静态变量的生命周期,起始于类的加载,终止于类的释放。

什么时候类会加载呢?

我们知道,在app打开时,会创建一个进程,然后初始化一个dvm的实例,负责类的加载释放 和 垃圾回收等。

换句话说,在进程创建之后,就会加载类,静态变量诞生了。

那何时释放?

当然是在类卸载的时候。同上面。在进程结束之前,静态变量就寿终正寝。

我们知道,Android中,你是不知道何时进程会被Kill。所以

1.不能保证静态变量会一直存在.(进程可能被Kill掉)

2.每次打开app时静态变量的值都是初始值(进程没有被kill掉所以静态变量保存的还是上次的值)。

而且,静态变量是不会被垃圾回收的,其对象一直保持引用,及ARC不可能是0。

所以要自己释放静态变量。

网上查到的相关链接

1

单例模式讨论篇:单例模式与垃圾回收

http://blog.csdn.net/zhengzhb/article/details/7331354

Jvm的垃圾回收机制到底会不会回收掉长时间不用的单例模式对象,这的确是一个比较有争议性的问题。将这一部分内容单独成篇的目的也是为了与广大博 友广泛的讨论一下这个问题。为了能让更多的人看到这篇文章,请各位博友看完文章之后,点一下 顶 ,让本篇文章排名尽量的靠前。笔者在此谢过。

讨论命题:当一个单例的对象长久不用时,会不会被jvm的垃圾收集机制回收。

首先说一下为什么会产生这一疑问,笔者本人再此之前从来没有考虑过垃圾回收对单例模式的影响,直到去年读了一本书,《设计模式之禅》秦小波著。在书中提到 在j2ee应用中,jvm垃圾回收机制会把长久不用的单例类对象当作垃圾,并在cpu空闲的时候对其进行回收。之前读过的几本设计模式的书,包括 《java与模式》,书中都没有提到jvm垃圾回收机制对单例的影响。并且在工作过程中,也没有过单例对象被回收的经历,加上工作中很多前辈曾经告诫过笔 者:尽量不要声明太多的静态属性,因为这些静态属性被加载后不会被释放。因此对jvm垃圾收集会回收单例对象这一说法持怀疑态度。渐渐地,发现在同事中和 网上的技术人员中,对这一问题也基本上是鲜明的对立两派。那么到底jvm会不会回收长久不用的单例对象呢。

对这一问题,**笔者本人的观点是:不会回收**。

下面给出本人的测试代码

[java] view plaincopy

class Singleton {

private byte[] a = new byte[6*1024*1024];

private static Singleton singleton = new Singleton();

private Singleton(){}

1

2

3

public static Singleton getInstance(){

return singleton;

}

}

class Obj {

private byte[] a = new byte[3*1024*1024];

}

public class Client{

public static void main(String[] args) throws Exception{

Singleton.getInstance();

while(true){

new Obj();

}

}

}

本段程序的目的是模拟j2ee容器,首先实例化单例类,这个单例类占6M内存,然后程序进入死循环,不断的创建对象,逼迫jvm进行垃圾回收,然后观察垃 圾收集信息,如果进行垃圾收集后,内存仍然大于6M,则说明垃圾回收不会回收单例对象。

运行本程序使用的虚拟机是hotspot虚拟机,也就是我们使用的最多的java官方提供的虚拟机,俗称jdk,版本是jdk1.6.0_12

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...