Java一个对象的存活时间

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:12:55
Test t;
t = new Test("a");
t = new Test("b");

有点地方不清楚
第一,是不是定义变量t的时候在内存中占用了空间;
第二,new Test("a");new Test("b");是不是都占用了内存空间;
第三,假如在Test的类中有循环的方法,比如Timer,那前两个问题结果是不是不一样了;
第四,如果不用的对象,要使用哪个方法释放空间。

第一,定义变量的时候还没有分配空间,只有new之后才分配空间
第二,每次调用new都会重新分配一次空间,这里new Test("b')之后,由于 new Test("a"); 已经不在使用,所以它所分配的空间会被垃圾回收器回收,但是具体如何回收,何时回收我们不知道
第三,分配类的空间和其中的方法没有关系,一般是根据类中实例变量来决定分配的空间
第四,java中程序员是不能决定何时释放内存空间的,这都是由虚拟机来完成的

对象都是垃圾回收器都是系统自动回收的,这你可以不用考虑!你说你具体遇到我问题,在循环里面的话 作用域是这个循环域!...

1、不是,JAVA中所有的对象创建都是在堆中进行的(堆或栈是内存中分出来的一小块,用于创建临时变量的)

2、数据是在栈中创建的
3、是的,不论如何,JAVA中的对象和数据都是在堆栈中创建的。
4、JAVA中自带有内存资源回收机制,这一点不像C++,创建对象使用完后要手动销毁,所以你创建对象使用完之后可以不用管,JAVA虚拟机会定时扫描整个程序,将不用的对象或数据销毁。