首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jcmd VM.set_flag,哪些标志是可写的?

jcmd VM.set_flag,哪些标志是可写的?
EN

Stack Overflow用户
提问于 2017-10-17 08:01:46
回答 2查看 1.4K关注 0票数 6

我试图尝试使用jcmd VM.set_flag选项。但是遇到一个错误,说“只能设置‘可写’标志”。什么是可写标志?

得到我的pid:

代码语言:javascript
复制
XXX@XXX-Air:~/javacode$ jcmd -l
6294 Test
6295 jdk.jcmd/sun.tools.jcmd.JCmd -l

试图更改vm标志:

代码语言:javascript
复制
XXX@XXX-Air:~/javacode$ jcmd 6294 VM.set_flag ConcGCThreads 4
6294:
only 'writeable' flags can be set
XXX@XXX-Air:~/javacode$ jcmd 6294 VM.set_flag MaxNewSize 1G
6294:
only 'writeable' flags can be set

编辑:它适用于可管理的标志,下面是成功的命令。

代码语言:javascript
复制
 XXXX@XXX-Air:~/javacode$ jcmd 11441 VM.flags -all | grep MinHeapFreeRatio
    uintx MinHeapFreeRatio                         = 40                                    {manageable} {default}
XXXX@XXX-Air:~/javacode$ jcmd 11441 VM.set_flag MinHeapFreeRatio 45
11441:
Command executed successfully
XXXX@XXX-Air:~/javacode$ jcmd 11441 VM.flags -all | grep MinHeapFreeRatio
    uintx MinHeapFreeRatio                         = 45    
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-17 08:10:34

可写标志被标记为{manageable}

您可以用jcmd 12345 VM.flags -all列出所有标志。然后,您可以将grep用于可管理的(我的Oracle上的jdk8 ):

代码语言:javascript
复制
$ jcmd 12345 VM.flags -all | grep manageable
     intx CMSAbortablePrecleanWaitMillis            = 100                                 {manageable}
     intx CMSTriggerInterval                        = -1                                  {manageable}
     intx CMSWaitDuration                           = 2000                                {manageable}
     bool HeapDumpAfterFullGC                       = false                               {manageable}
     bool HeapDumpBeforeFullGC                      = false                               {manageable}
     bool HeapDumpOnOutOfMemoryError                = false                               {manageable}
    ccstr HeapDumpPath                              =                                     {manageable}
    uintx MaxHeapFreeRatio                          = 100                                 {manageable}
    uintx MinHeapFreeRatio                          = 0                                   {manageable}
     bool PrintClassHistogram                       = false                               {manageable}
     bool PrintClassHistogramAfterFullGC            = false                               {manageable}
     bool PrintClassHistogramBeforeFullGC           = false                               {manageable}
     bool PrintConcurrentLocks                      = false                               {manageable}
     bool PrintGC                                   = false                               {manageable}
     bool PrintGCDateStamps                         = false                               {manageable}
     bool PrintGCDetails                            = false                               {manageable}
     bool PrintGCID                                 = false                               {manageable}
     bool PrintGCTimeStamps                         = false                               {manageable}
票数 5
EN

Stack Overflow用户

发布于 2017-10-17 08:13:42

关于VM选项的文章指出:-

标记为可管理的的标志可以通过JDK管理接口(JDK)和JConsole动态写入。

要找出所有这样的标志,可以使用VM.flags

打印VM标志选项及其当前值

-all作为以下选项:

打印VM支持的所有标志。

使用以下命令:-

代码语言:javascript
复制
jcmd <pid> VM.flags -all
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46785304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档