Операции Safepoint в нашей JVM иногда очень долго синхронизируют потоки. Однако время вращения и блокировки очень мало во время этих событий.
Общая причина показывает <100 мс для вращения, но более 30 секунд до 4 минут для синхронизации. </p>
Пока не помогли ни поток Thread в Safepointtimeout, ни попытка анализа журнала того, что происходит в эти моменты.
Система представляет собой потоковое приложение RTP в реальном времени, использующее JMF (и JDK 1.7) на виртуальной машине Windows Server.
Используемые флаги JVM:
-server
-Xloggc:./Log/gc.log
-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xmx2G
-XX:-OmitStackTraceInFastThrow
-XX:+PrintSafepointStatistics
–XX:PrintSafepointStatisticsCount=1
-XX:+SafepointTimeout
-XX:SafepointTimeoutDelay=20
Журналы для безопасных точек выглядят следующим образом (включая несколько окружающих)
55577.063: RevokeBias [ 2122 0 3 ] [ 0 0 0 0 0 ] 0
55577.066: BulkRevokeBias [ 2126 168 4 ] [ 49 0 94867 2 13 ] 0
55671.953: RevokeBias [ 2111 1 0 ] [ 0 0 15 1 16 ] 0
56867.883: RevokeBias [ 1742 0 1 ] [ 0 0 0 0 0 ] 0
56868.738: RevokeBias [ 1746 457 1 ] [ 88 0 39473 2 0 ] 0
56908.219: RevokeBias [ 1755 0 5 ] [ 0 0 0 1 0 ] 0
Я хотел бы знать, какие обстоятельства могут вызывать эти массовые времена синхронизации, не считая время вращения или блокировки.
Заранее спасибо