Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 执行器服务关闭-卡夫卡_Java_Apache Kafka_Executorservice_Kafka Consumer Api - Fatal编程技术网

Java 执行器服务关闭-卡夫卡

Java 执行器服务关闭-卡夫卡,java,apache-kafka,executorservice,kafka-consumer-api,Java,Apache Kafka,Executorservice,Kafka Consumer Api,我从卡夫卡获取消息,并使用类似于下面的Executor服务处理它们。我没有调用executorService.shutdown()。我偶尔会看到heapSize异常,但不确定这是否是原因之一。如何在完成后删除未使用的可运行实例?我应该做一些具体的事情来明确地使它符合GC的条件吗 public class Consumer implements CommandLineRunner{ ExecutorService executorService; executorService

我从卡夫卡获取消息,并使用类似于下面的Executor服务处理它们。我没有调用executorService.shutdown()。我偶尔会看到heapSize异常,但不确定这是否是原因之一。如何在完成后删除未使用的可运行实例?我应该做一些具体的事情来明确地使它符合GC的条件吗

public class Consumer implements CommandLineRunner{

    ExecutorService executorService;
    executorService = Executors.newFixedThreadPool(50)
    executorService.submit(runnable);

  }
}

来自执行器的文档。newFixedThreadPool:

创建一个线程池,该线程池重用固定数量的操作线程 离开共享的无界队列。在任何时候,最多读取个线程 将是活动的处理任务。如果提交了其他任务 当所有线程都处于活动状态时,它们将在队列中等待,直到 线程是可用的。如果任何线程在运行期间由于故障而终止 在关闭前执行,如果需要,将替换一个新的 执行后续任务。池中的线程将一直存在到 它是显式关闭的

例如,线程池中最多有50个活动线程,当您调用
shutdown
方法时,这些线程将被释放

如果您没有保留对
Runnable
s的引用,则在
Executor
处理完这些引用后,它们将被GCed。如果出现内存不足异常,这可能是由于执行者无法跟上提交给他的工作时,队列中的
Runnable
s造成的

编辑:如果任务占用大量内存(显然),也可能发生内存不足异常