关于变量的生命周期与引用计数
在java的世界中听说一般变量的生命周期存在于代码块.
比如
void fun()
{
String str = new String("aaa"); //fun返回,则str自动释放引用.
boolean isOk = true;
if(isOk)
{
String str2 = new String("bbb"); //出花括号后str2自动释放引用
}
}
前面如果没有错, 那都好理解原理.
现在问题来了.
void fun()
{
for(int i=0; i<100; ++i)
{
String str = new String("str"+i);// str什么时候释放引用呢? 是否有内存泄漏呢?
}
String tempStr = null;
for(int j=0; j<100; ++j)
{
tempStr = new String("str"+j); //tempStr什么时候释放引用? 是否有内存泄漏呢?
}
}
在C++中, for中的临时变量, 每一次循环都会经历创建和销毁. 即如果是一个对象, 那么每次循环都会经历对象的构造和析构.
如果Java中也相同, 那么应该在第一个for循环中, str应该是每执行一次循环就释放一次引用. 每次for循环后没有任何String对象被引用. 第二个for循环内存除了最后一次外, 前面的String对象都将变成"游离对象",
请各位指点. 感激不尽. 回答的都有分