栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。
堆:存放用new产生的数据。
静态域:存放在对象中用static定义的静态成员。
常量池:存放常量。
当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。
静态变量是类相关的变量,所以他的生命周期是从这个类被声明,到这个类彻底被垃圾回收机制彻底回收才会被销毁。
静态变量生命周期就是类的开始和销毁 |