冲杯茶喝 2012-04-17 15:56
浏览 204
已采纳

java内存回收gc的问题

看代码

while(...){
List list =new arraylist
list.add();

}

请问进入下一次循环的时候 上一次循环产生的list能够被gc回收吗

  • 写回答

4条回答 默认 最新

  • ll89308839 2012-04-17 18:50
    关注

    上面的说的不对,回收不回收,jvm说了算,并不是立刻就回收
    jvm启动参数上加上gc的日志-XX:+PrintGCDetails
    [code="java"]
    public class TestGc
    public static void main(String[] args) {
    int i=1000;
    while(i-->0){
    List l = new ArrayList();
    for(int j=0;j++<1000;l.add(Integer.valueOf(i)));
    System.out.println("loop "+i+" finish");
    }
    }
    [/code]
    结果可以看出来,并不是立即释放,而是由jvm自己去决定什么时候去释放
    除非手动调用System.gc();
    最好不要手动去释放

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!