1.六个数据保存的地方:寄存器、堆栈、堆、静态存储、常数存储、非RAM存储。
(1)寄存器,位于处理器内部,这是最快的保存区域,但我们程序中一般没有实际控制权。
(2)栈,驻留与RAM中,Java中主要存储引用(句柄/指针)以及8种基本类型,存取速度仅次于寄存器。它通过指针的上移下移来创建和移除数据,但是必须准确知道所有数据的长度和存储时间。
(3)堆,驻留于RAM中,Java中主要存储对象。不需知道数据的长度和存储时间,但是分配内存空间时比较耗时。
(4)静态存储,驻留于RAM中,Java中主要存储静态对象,即使用static修饰的数据。
(5)常数存储,位于程序内部。
(6)非RAM存储,即网络或磁盘存储。
2.static关键字的使用情形:
一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。
另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。
同样的,我们可以推出,无论一个类被创建多少次,该类中的static对象总是使用同一块内存区域。
3.匿名对象,当匿名对象使用后,垃圾处理器会接着将其回收,不必担心内存问题。例如
System.out.println(new Date());
创建Date 对象唯一的目的就是将它的值发送给 println()。一旦这个语句执行完毕,
Date 就不再需要。随之而来的“垃圾收集器”会发现这一情况,并在任何可能的时候将其回收。事实上,我
们没太大的必要关心“清除”的细节