Что означает опция -J в jstat?

Я изучаю некоторые инструменты JVM, такие как jstat, jmap, jtack и т. д. Когда я набираю jstat в командной строке, он отвечает следующими сообщениями:

Usage:
    jmap [option] <pid>
        (to connect to running process)
    jmap [option] <executable <core>
        (to connect to a core file)
    jmap [option] [server_id@]<remote server IP or hostname>
        (to connect to remote debug server)

where <option> is one of:
    <none>               to print same info as Solaris pmap
    -heap                to print java heap summary
    -histo[:live]        to print histogram of java object heap; if the "live"
                         suboption is specified, only count live objects
    -permstat            to print permanent generation statistics
    -finalizerinfo       to print information on objects awaiting finalization
    -dump:<dump-options> to dump java heap in hprof binary format
                         dump-options:
                           live         dump only live objects; if not specified,
                                        all objects in the heap are dumped.
                           format=b     binary format
                           file=<file>  dump heap to <file>
                         Example: jmap -dump:live,format=b,file=heap.bin <pid>
    -F                   force. Use with -dump:<dump-options> <pid> or -histo
                         to force a heap dump or histogram when <pid> does not
                         respond. The "live" suboption is not supported
                         in this mode.
    -h | -help           to print this help message
    -J<flag>             to pass <flag> directly to the runtime system

Вопрос в том, что меня смущает опция -J.

-J<flag>             to pass <flag> directly to the runtime system

Когда я набираю jstat -J-version, он говорит

java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)

Для чего используется эта опция и что именно означает «флаг»?


person Eric Fan    schedule 11.09.2015    source источник
comment
Рассматривали ли вы возможность ознакомиться с документацией?   -  person user207421    schedule 11.09.2015
comment
@EJP Я думаю, совершенно очевидно, что он читал документацию, поскольку она хорошо задокументирована в его вопросе.   -  person Craig    schedule 11.09.2015
comment
@EJP Я думал, что справочное сообщение «передать ‹flag› непосредственно в систему выполнения» является официальным объяснением этой опции, но я этого не понимаю. Поэтому я искал в Google ключевое слово «передать ‹flag› непосредственно в система выполнения», а не «jstat», в результате у меня нет ничего ценного. Это довольно ясно после прочтения документации, на которую ссылается EJP, -J просто означает javaOption. Большое спасибо.   -  person Eric Fan    schedule 11.09.2015


Ответы (2)


Онлайн-документация Oracle о jstat более ясна:

-JjavaOption

Передает javaOption средству запуска приложений Java. Например, -J-Xms48m задает загрузочную память 48 МБ. Полный список опций см. в java(1).

Этот параметр используется для передачи параметра Java в среду выполнения JRE, например, для установки размеров памяти. Список возможных вариантов можно посмотреть здесь.

person Tunaki    schedule 11.09.2015
comment
Спасибо. Это очень ясно после того, как я прочитал Oracle Docs. Я искал в Google ключевое слово «передать ‹flag› непосредственно в систему выполнения», а не «jstat», в результате я не получил ничего ценного. - person Eric Fan; 11.09.2015

Это означает, что он передает этот флаг дочернему процессу JVM, который вызывает jstat.

Например, jstat -J-version эффективно вызывает:

java -version

что приводит к распечатке версии JVM.

person Andy Turner    schedule 11.09.2015