Thread sleep 与GC的关系

weixin_43821585 2019-01-10 06:31:37
当-Xmx20m -Xmn10m时为什么加了Thread.sleep(10)就能正常回收了呢,虽然时回收了但main在引用着list,不是应该不让它回收才是吗?
package _2_4;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;

/**
* Java 堆溢出
* Java堆内存的OOM异常
* @author Administrator
* -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
*/

public class HeapOOM {
static class OOMObject{

}

public static void main(String args[]){
try{
Thread.sleep(10000);
HeapOOM heapOOM = new HeapOOM();
heapOOM.test();

}catch(Exception e){
e.printStackTrace();
}
}

public void test(){
try{
List<OOMObject> list = new ArrayList<>();
while(true){
// Thread.sleep(10);
list.add(new OOMObject());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
...全文
309 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwesternwind 2019-01-12
  • 打赏
  • 举报
回复
加了Thread.Sleep()就正常回收了?你是怎么得到这个结论的?不会是你们老师教的吧?
应该和Thread.Sleep()没关系,这个明显不会回收。没有发生是因为你等的时间不够长。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧