静态变量什么时候会被回收
静态变量是在类被load的时候分配内存的,并且存在于方法区。当类被卸载的时候,静态变量被销毁。
一、静态变量在类被加载的时候分配内存。
类在什么时候被加载?
当我们启动一个app的时候,系统会创建一个进程,此进程会加载一个Dalvik VM的实例,然后代码就运行在DVM之上,类的加载和卸载,垃圾回收等事情都由DVM负责。也就是说在进程启动的时候,类被加载,静态变量被分配内存。
二、静态变量在类被卸载的时候销毁。
类在什么时候被卸载?
在进程结束的时候。
说明:一般情况下,所有的类都是默认的ClassLoader加载的,只要ClassLoader存在,类就不会被卸载,而默认的ClassLoader生命周期是与进程一致的,本文讨论一般情况。
三、Android中的进程什么时候结束
这个是Android对进程和内存管理不同于PC的核心——如果资源足够,Android不会杀掉任何进程,另一个意思就是进程随时可能会被杀掉。而Android会在资源够的时候,重启被杀掉的进程。也就是说静态变量的值,如果不做处理,是不可靠的,可以说内存中的一切都不可靠。如果要可靠,还是得保存到Nand或SD卡中去,在重启的时候恢复回来。
另一种情况就是不能把退出所有Activity等同于进程的退出,所以在用户点击图标启动应用的时候,以前存放于静态变量中的值,有可能还存在,因此要视具体情况给予清空操作。
四、Application也是一样不可靠
Application其实是一个单例对象,也是放在内存中的,当进程被杀掉,就全清空了,只不过Android系统会帮重建Application,而我们存放在Application的数据自然就没有了,还是得自己处理。
五、静态引用的对象不会被垃圾回收
只要静态变量没有被销毁也没有置null,其对象一直被保持引用,也即引用计数不可能是0,因此不会被垃圾回收。因此,单例对象在运行时不会被回收。
静态变量什么时候会被回收相关推荐
- 面向对象——概念(成员变量、静态变量、成员方法、静态方法、垃圾回收机制、重载、包)...
静态变量和成员变量的区别: 1.成员变量描述的是对象的特征,包含在对象之中.不同的对象成员变量彼此独立.一个对象成员变量的改变,不会影响其他对象. 静态变量独立在对象之外,是所有对象共享的变量.静态变 ...
- C# 静态变量会被gc回收么?
C# 静态变量会被gc回收么? 静态变量是放在 静态区 里面的,不受GC控制,只有程序关闭退出,内存才会被回收 当静态变量指向的内存对象变为unll时, 他之前引用的对象内存可以被回收 如果存在一个内 ...
- java 静态变量回收_浅谈静态变量的回收问题
今天工作中遇到一个用于缓存数据到内存的静态变量Stringbuffer:当缓存数据大小达到5M的时候就把该缓存数据写到S3上:然后清空该缓存buffer;看了这段代码我觉得是不是有点问题:先贴大概的代 ...
- Android静态变量的生命周期
Android是用Java开发,其静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法区.当类 被卸载的时候,静态变量被销毁.在PC机的客户端程序中, ...
- 堆栈,静态变量和普通变量,静态函数和普通函数的区别
首先简单介绍一下堆和栈的区别. 1.内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1).栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似 ...
- 静态类和非静态类中静态变量
深入理解C# 静态类与非静态类.静态成员的区别 静态类 静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量.在声明一个类时使用static关键字,具 ...
- [转载]内存分配 知识,全局,局部,静态变量
[转载]内存分配 知识,全局,局部,静态变量 预备知识-程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变 ...
- 【Java 虚拟机原理】Java 引用类型 ( 强引用 | 软引用 | 弱引用 | 虚引用 | 静态变量 )
文章目录 一.静态变量 二. Java 引用类型 ( 强.软.弱.虚 ) 一.静态变量 GC Root 对象 : 线程栈 中的 栈帧 中的 局部变量表 中的 引用对象 ; 方法区 中的 静态引用对象 ...
- 全局变量、成员变量、类变量、静态变量、实例变量、局部变量的定义与区别
全局变量 全局变量又叫成员变量,它是声明在类里,函数,静态语句块外的变量,全局变量又分为类变量(静态变量).实例变量两种. 通过代码来看一下: private int i;//实例变量 private ...
最新文章
- Hello Struts2
- dubbo provider异步_Dubbo相关面试题
- 制造linux内核异常,了解Linux内核中的异常
- python 识别子串的位置_Python基础语法小白这一篇就足够了!
- 查询数据进行排名,一样的并列
- 编程基本功:学会抄,自然就会创新
- android ps模拟器 金手指,电脑ps模拟器金手指的使用教程
- matlab 函数pdf怎么用_怎么将Word转换成PDF?Word转PDF就得用这个工具
- 滴滴程序员年薪80万却被亲戚鄙视:钱多有啥用,我儿子二本大学教师
- 为何QQ突然能注销了?近年推行的大好事知多少
- cada0图纸框_按1:1画图后如何出A0图纸图框怎么设置?
- 什么是文件的绝对路径
- 华清远见-重庆中心-HTML、CSS技术总结
- r与python的区别和联系-Python和R语言的区别?
- Android开发系统应用程序
- C语言值的引用传递—引用传递(地址传递)
- leetcode阶段总结——拓扑排序
- HDU 2187汶川地震
- 超级账本Fabric 2.x 详细安装步骤及可能问题解决方式
- 鸿蒙os现在好用吗,全球首批!升级使用鸿蒙OS真实反馈评价出炉:差评/好评都很真实...