可疑的内存泄漏:org.apache.spark.util.MutableURLClassLoader逐渐产生许多线程并将其置于等待状态

时间:2018-07-05 10:59:20

标签: apache-spark java-8 spark-streaming netty spark-cassandra-connector

长时间运行该应用程序(即使没有任何重大处理),通常会观察到OOM错误。

进行堆转储后,我发现由于线程数量的稳定增长,内存消耗也在稳定增长。另外,我检查了几个处于等待状态的线程(我想它将全部处于等待状态)。

创建的此类线程数= 26,805,并且正在稳定增长。

一目了然的详细信息:

对象/堆栈框架java.lang.Thread @ 0x655b26fa8 名称池891340-thread-2 浅堆120 保留堆19,648 上下文类加载器org.apache.spark.util.MutableURLClassLoader @ 0x640009d80 守护进程是否为假 总计:6个条目  线程堆栈

pool-891340-thread-2   在sun.misc.Unsafe.park(ZJ)V(本机方法)   在java.util.concurrent.locks.LockSupport.park(Ljava / lang / Object;)V(LockSupport.java:175)   在java.util.concurrent.locks.AbstractQueuedSynchronizer $ ConditionObject.await()V(AbstractQueuedSynchronizer.java:2039)   在java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take()Ljava / util / concurrent / RunnableScheduledFuture; (ScheduledThreadPoolExecutor.java:1081)   在java.util.concurrent.ScheduledThreadPoolExecutor $ DelayedWorkQueue.take()Ljava / lang / Object; (ScheduledThreadPoolExecutor.java:809)   在java.util.concurrent.ThreadPoolExecutor.getTask()Ljava / lang / Runnable; (ThreadPoolExecutor.java:1067)   在java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava / util / concurrent / ThreadPoolExecutor $ Worker;)V(ThreadPoolExecutor.java:1127)   在java.util.concurrent.ThreadPoolExecutor $ Worker.run()V(ThreadPoolExecutor.java:617)   在java.lang.Thread.run()V(Thread.java:745)

SPARK版本为2.1.0

任何避免此类问题的帮助都将非常有帮助。谢谢。

0 个答案:

没有答案