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:

Java 不停的创建新线程,GC长时间停顿问题

 

Java 不停的创建新线程,GC长时间停顿问题

Java 不停的创建新线程,GC长时间停顿问题

Java 不停的创建新线程,GC长时间停顿问题

对象个数不停增长就是不回收!

然后过了很长时间才有一个回收:

Java 不停的创建新线程,GC长时间停顿问题

Java 不停的创建新线程,GC长时间停顿问题

我估计是一种自适应,gc会根据以往的创建因素,调整gc时间,用不着不停的gc吧,因为对象没创建够,没到达到最大峰值,仍有余力。也可能是其他原因!不管如何用线程池最好,会不停的gc。

参考文章1

参考文章2