2014-10-20 1 views
0

Я отлаживал проблему памяти в экземплярах Hazelcast. Я использую Hazelcast для реализации моей службы-исполнителя. Я не нужны результаты назад от исполнителя, и я просто продолжать идти на представления рабочих мест черезИсполнитель, используя Hazelcast

executorService.executeOnMember(Runnable, member); 

Она работает хорошо в течение некоторого времени и после того, что память заполнена.

Я инструмент нить свалка, и я мог видеть это

 at com.hazelcast.executor.RunnableAdapter.call(RunnableAdapter.java:49) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at com.hazelcast.executor.DistributedExecutorService$CallableProcessor.run(DistributedExecutorService.java:187) 
    at com.hazelcast.util.executor.CachedExecutorServiceDelegate$Worker.run(CachedExecutorServiceDelegate.java:186) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
    at com.hazelcast.util.executor.HazelcastManagedThread.executeRun(HazelcastManagedThread.java:76) 
    at com.hazelcast.util.executor.HazelcastManagedThread.run(HazelcastManagedThread.java:92) 

Первое, что поразило меня были представленные работы уничтожены после завершения или мне нужно вручную кода для этого. Это произошло, когда мы используем FutureTask, который используется во время возвращения объекта.

ответ

0

Вам не нужно уничтожать свои рабочие места после завершения. Hazelcast удаляет задание из рабочей очереди, когда он выполняется, и gc заботится обо всем остальном.

О полной памяти: вы работаете в OOME? По умолчанию IExecutorService будет продолжать принимать задачи и не смотрит, сколько памяти доступно. И это может привести к OOME, если вы производите задания быстрее, чем они потребляются.

Но вы можете установить queueCapacity на ExecutorConfig. Как только будет достигнута максимальная емкость, на вызывающей стороне вы получите исключение RejectedExecutionException. Вы можете использовать это для применения противодавления