一个类的实例方法 public void test(){
//dosomethings ... for(int i=0;i<100;i++){ //dosomethings ... } //dosomethings.....
}
这段方法在执行时,变量i的作用域在for循环块中,当出了for循环块以外,变量i失效。但是我想问一下,当出了for循环块以后,变量i的所在内存是否会被回收。也就是说是否在此test方法的栈帧出栈之前被回收?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
当调用一个java方法时,产生一个帧,帧里面包括操作数栈、局部变量区和帧数据区
这个局部变量区的大小在编译的时候就已经确定了,在运行时是通过索引来访问的,类似于数组,所以即使出了作用域,这个局部变量区数组还是那么大,不会被compact的,直到方法调用结束将整个帧discard
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!