Почему приложение создает 31 «поток задач GC» в одном окне Solaris, а только 2 - в другом? - PullRequest
1 голос
/ 04 ноября 2011

Я видел в одном приложении (Java), которое нерегулярно использует память в коробке Solaris.Когда я сделал дамп потока, я увидел, что было 31 «поток задачи GC» ...

Это очень странно, как и в других окнах Solaris, у того же приложения было только 2 «потока задачи GC».

Интересно, если кто-нибудь знает, при каких обстоятельствах jvm создаст так много потоков задач GC и может ли это вызвать проблемы с памятью?

Любые идеи приветствуются.

Еще немного предыстории моего дела: каждый раз, когда в одном окне будут одновременно работать два одинаковых Java-приложения.Я буду продолжать посылать запросы в приложение A, а не в приложение B. Поэтому приложение B должно быть неактивным.И он всегда "спит" при использовании prstat.

Странно то, что в одном окне Solaris приложение B продолжает использовать память, пока приложение A обрабатывает запрос.И в дампе потока приложения B я вижу 31 поток задач GC.А в другом окне Solaris приложение B в норме, память нормальная и только 2 потока задач GC.

Большое спасибо.

1 Ответ

3 голосов
/ 10 октября 2012

Поток задач GC связан с поведением параллельного сборщика мусора.Значение числа параллельных потоков GC определяется параметром командной строки

-XX:ParallelGCThreads=n 

.В документации виртуальной машины Java hotspot говорится:

-XX: ParallelGCThreads = n

Устанавливает количество потоков, используемых во время параллельных фаз сборщиков мусора.Значение по умолчанию зависит от платформы, на которой работает JVM.

(см .: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html)

В документации явно не указано, но значение по умолчанию меняетсяс количеством процессоров / ядер, которые есть в платформе, и я думаю, что число равно количеству процессорных ядер.

До сих пор это был ответ на вопрос "почему JVM создает такое количество потоков задач GC.

Вызывает ли это какие-либо проблемы с памятью? Ответ - нет. Фактически, каждый из потоков GC будет иметь очень малые объемы памяти, и, следовательно, они не должны вызывать каких-либо значительных проблем с памятью. Однако вы можетедля точной настройки количества потоков сборки мусора с помощью параметра, описанного выше.

...