JAVA DestroyJavaVM поток высокой загрузки процессора - PullRequest
0 голосов
/ 06 апреля 2020

Я нахожу поток DestroyJavaVM, использующий 99% процессора (около одного ядра процессора) при запуске приложения. Я не могу найти какой-либо документ по этой теме. В одном ответе в StackOverflow говорилось, что этот поток ничего не делает, но присоединяется к другим потокам no daemon. Это смутило меня, почему при запуске приложения используется так много процессора. Я также обнаружил, что в одном сообщении говорится, что поток DestroyJavaVM является родительским потоком другого потока, а команда top накапливает все дочерние потоки по отношению к родительскому. Но когда я использую pstree comman для показа java дерева потоков, это не так.

1 Ответ

2 голосов
/ 06 апреля 2020

DestroyJavaVM не является отдельной веткой. По сути, это поток Java, который инициирует выключение виртуальной машины, т. Е. Либо последний поток приложения, не являющийся демоном, либо поток, который вызывает System.exit().

Когда JVM собирается завершить работу, он переименовывает текущий поток в DestroyJavaVM и инициирует последовательность завершения работы с помощью этого потока.

В случае простого приложения, когда все бизнес-логики c вызываются из метода main, это будет Главный поток, который переименовывается в DestroyJavaVM, когда возвращается метод main. То, что вы наблюдаете, это, вероятно, только основной поток, который использует ЦП для своей основной работы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...