Работает ли параллельный сборщик мусора в отдельном потоке вместе с основной программой? - PullRequest
0 голосов
/ 15 декабря 2018

Я использую JKD8 и, как я вижу с помощью следующей команды, по умолчанию JVM использует параллельный сборщик мусора.Как я могу наблюдать, если мусор работает в отдельном потоке рядом с основной программой?Есть ли какой-либо параметр, подобный параметру -XX: -PrintGCDetails?

Кстати, я использую Visual VM, и можно ли его оттуда наблюдать?Например, в разделе -> «Темы», потому что я не могу его найти.

java -XX:+PrintCommandLineFlags  -XX:-PrintGCDetails -version
-XX:InitialHeapSize=535233856 -XX:MaxHeapSize=8563741696 -XX:+PrintCommandLineFlags -XX:-PrintGCDetails -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

1 Ответ

0 голосов
/ 15 декабря 2018

Сборщики мусора работают в отдельном потоке.Вы можете наблюдать это в дампе потока:

...

"VM Thread" os_prio=0 tid=0x00007f4fec078000 nid=0x74c9 runnable 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f4fec01f800 nid=0x74c5 runnable 

"GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f4fec021800 nid=0x74c6 runnable 

"GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f4fec023000 nid=0x74c7 runnable 

"GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f4fec025000 nid=0x74c8 runnable 

...

Вы можете создать дамп потока, отправив SIGQUIT (3) процессу:

kill -SIGQUIT <pid>

См. RedHat для этого:https://access.redhat.com/solutions/18178

...