Почему команда jvm `jinfo` не имеет` -flags` в дистрибутиве alpine openjdk8? - PullRequest
2 голосов
/ 11 марта 2020

Я использовал docker для создания программы java, начало Dockerfile -

FROM openjdk:8-jdk-alpine

, но я заметил, что у команды jvm jinfo нет -flags, что не так?

    bash-4.4# ./jinfo
    Usage:
        jinfo <option> <pid>
           (to connect to a running process)

    where <option> is one of:
        -flag <name>         to print the value of the named VM flag
        -flag [+|-]<name>    to enable or disable the named VM flag
        -flag <name>=<value> to set the named VM flag to the given value
        -h | -help           to print this help message

1 Ответ

1 голос
/ 12 марта 2020

JDK для Alpine построен без поддержки Serviceability Agent , поскольку SA полагается на функции, которых у musl нет .

Некоторые утилиты JDK используют Serviceability Agent в капюшон для определенных функций. jinfo -flags является примером такой утилиты. Другими примерами, которые также используют SA под капотом, являются jmap -F и jstack -F. Эти опции также недоступны в Alpine JDK. В этот ответ я описал, как принудительный режим (-F) отличается от обычного режима, и какую роль там играет агент по исправности.

jinfo -flags можно заменить на jcmd <pid> VM.flags .

jcmd не зависит от SA и работает на Alpine Linux.

...