Java 不停的创建新线程,GC长时间停顿问题
ExecutorService pool = Executors.newFixedThreadPool(100);
while (true) {
System.out.println(newObject());
String ss = newObject();
// pool.execute(new Runnable() {
//
// @Override
// public void run() {
// System.out.println(Thread.currentThread().getName()+":"+ss);
// }
// });
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ":" + ss);
}
}).start();
}
jprofiler:
对象个数不停增长就是不回收!
然后过了很长时间才有一个回收:
我估计是一种自适应,gc会根据以往的创建因素,调整gc时间,用不着不停的gc吧,因为对象没创建够,没到达到最大峰值,仍有余力。也可能是其他原因!不管如何用线程池最好,会不停的gc。