今天又被静态变量坑了,特写此文,几年前被批的经历都忘啦
2015-12-05 20:41
246 查看
摘要: 坑爹的静态变量
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量
静态变量和实例变量的区别在于:
类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并分配内存空间,当类被卸载时,静态变量被摧毁,并释放所占有的内存。
类的每一个实例都有相应的实例变量,每创建一个类的实例,java虚拟机为实例变量分配一次内存,实例变量位于堆区中,实例变量的生命周期取决于实例的生命周期,当创建实例时,为实例变量背创建,并分配内存,当实例被销毁时,实例 变量被销毁,并释放所占有的内存空间。
假如成员变量时引用变量,该成员变量结束生命周期时,并不意味着它所引用对象也结束生命周期。变量的生命周期和对象的生命周期是不同的概念。
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量
静态变量和实例变量的区别在于:
类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并分配内存空间,当类被卸载时,静态变量被摧毁,并释放所占有的内存。
类的每一个实例都有相应的实例变量,每创建一个类的实例,java虚拟机为实例变量分配一次内存,实例变量位于堆区中,实例变量的生命周期取决于实例的生命周期,当创建实例时,为实例变量背创建,并分配内存,当实例被销毁时,实例 变量被销毁,并释放所占有的内存空间。
假如成员变量时引用变量,该成员变量结束生命周期时,并不意味着它所引用对象也结束生命周期。变量的生命周期和对象的生命周期是不同的概念。
相关文章推荐
- mysql显示乱码
- Julia :HDF5数据文件读写与更新
- mvc5入门,经典教程
- 数据结构——二分查找【转】
- cocos2d-x学习笔记(8)ScaleTo和ScaleBy 以及 Blink
- How to Keep Your Skills Up-to-Date in the New Year(如何提升测试技能)
- 固态硬盘的一些知识
- 简单数学题-跑操场
- Scrambled Polygon(斜率排序)
- 基于有限元方法的弹簧系统位移求解
- Linux 下Redis安装部署
- bzoj2819 NIM 树上两点间抑或值
- Map接口输出
- [C#]VisualStudio2015内置LocalDB
- 汉高澳大利亚sinox接口捆绑经典winxp,全面支持unicode跨语言处理
- 【总结】杂谈Java异常处理
- mysql乱码解决方案
- [LeetCode]006-ZigZag Conversion
- 基于FPGA的数字电路实验(一):实验准备及示例项目
- MAC之tar解压与压缩gz打包命令