连续两个for语句中的变量 i 的空间是否会释放?就是说for语句执行完后 i 的空间会不会得到释放?C语言里,好像是局部变量,所以执行完 i 就没了
for(int i;i<10;i++)
{ .......xxxxxx}
执行完毕,i不一定会释放,由垃圾回收来决定的
for(int i;i<10;i++)//但是此处一旦定义了int i, 上面的i立即失效,此处的i为重新分配的空间
{ .......xxxxxx}
class aaa implement actionlistener
{
public aaa()
{
Jtable temp=new Jtable();//此处也是由gc来控制回收,也说不准什么时候回收
}
public void actionPerformed(ActionEvent e)
{
Jtable temp=new Jtable();//也是由gc控制,这里的temp就和上面的temp没有关系了,是重新分配的内存空间
}
}
回收不回收是由GC决定的,单从代码分析是不健全的。
JAVA得垃圾回收作得很好的,初学不用考虑这么深,以后深入了解了再研究比较好。
不会的。上面那些变量都有它的生命周期(分别是for循环结束、对象实例不再被引用、方法结束),在它们的生命周期终止后,就会被垃圾回收器自动回收(不一定马上执行)。
造成内存泄露的原因是1:static 变量不能释放。 2。 JVM堆设置不合理,促发Full GC时旧生代空间不够容纳新生代的待释放对象。
java中开辟的这种基本常量的内存 是 一段时间不使用 的由 java虚拟机 清除的,没有什么泄露 不泄露的吧
一样的,执行完就没了
连续两个for语句中的变量
i
的空间是否会释放?就是说for语句执行完后
i
的空间会不会得到释放?C语言里,好像是局部变量,所以执行完
i
就没了
for(int
i;i<10;i++)
{
.......xxxxxx}
执行完毕,i不一定会释放,由垃圾回收来决定的
for(int
i;i<10;i++)//但是此处一旦定义了int
i,
上面的i立即失效,此处的i为重新分配的空间
{
.......xxxxxx}
class
aaa
implement
actionlistener
{
public
aaa()
{
Jtable
temp=new
Jtable();//此处也是由gc来控制回收,也说不准什么时候回收
}
public
void
actionPerformed(ActionEvent
e)
{
Jtable
temp=new
Jtable();//也是由gc控制,这里的temp就和上面的temp没有关系了,是重新分配的内存空间
}
}
回收不回收是由GC决定的,单从代码分析是不健全的。
JAVA得垃圾回收作得很好的,初学不用考虑这么深,以后深入了解了再研究比较好。