类对象当然可以多次实例化,在NEW的时候,就已经分配内存了!
*******
当然是对NEW以后的类对象进分内存分配,而不是类定义本身!
JAVA的内存模型分为堆栈(stack)和堆(heap),堆栈是可以单向增加或减少的内存管理模型,而堆则是针对对象类型的内存堆表分配机制.对于内存管理,是由JAVA自动控制的,程序员本身无须过分关心!
在JAVA中,基本类型和对象类型的引用声明都是保存在堆栈之中(就是已经分配了堆栈内存空间),对于对象的引用,实际就是一个指针,当然JAVA取消了指针概念。如果对象引用,不实际指向某个堆内存中的对象,那它就是孤立的,当跳出方法或块之后,内存就会被回收.而在使用NEW关键字以后,对于对象类型的数据都是JAVA本身进行分配并保存在堆内存之中,而对于孤儿的堆内存对象,系统也会自动回收,或者代码释放.
由于JAVA的一切都是对象,包括类定义本身,如果没有定义或声明引用,没有NEW进行实例化,当然谈不上内存分配,纯是概念上的东西!
所以可以这样说,一个类对象可以多次实例化,对每个实例化的对象,JAVA都会同时分配相应的堆栈和堆内存(堆栈里的是对象引用,堆里的是对象数据)! |