园洲做网站公司,软件开发外包公司企云云,动漫制作专业有哪些学校,网页设计公司未来三年规划费用jvm jinfo 参数在最近的一些博客中#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书中的评论中#xff09;#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是#xff0c;我从来没有专门解决过漂亮的jinfo工具#… jvm jinfo 参数 在最近的一些博客中特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书中的评论中我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是我从来没有专门解决过漂亮的jinfo工具这篇文章旨在纠正这种令人不安的情况。 我怀疑我以前选择不写jinfo的原因包括我在VisualVM中讨论的与jinfo有关的限制jinfo和So Much More 。 在我的机器上运行的jinfo的Java SE 8版本中解决了我在“ 获取JVM运行时信息”一文中讨论的Windows上jinfo的主要限制。 特别是我在-flags文章中指出当时Windows版本的jinfo不支持-flags选项。 正如下一个屏幕快照所证明的情况已不再如此请注意使用jps获取Java进程ID来指示jinfo进行查询。 如上面的屏幕快照所示 jinfo -flags命令和option显示了标志这些标志是受监视的Java进程的显式指定的JVM选项。 如果我想了解其他隐式自动有效的JVM标志则可以运行java -XX PrintFlagsFinal来查看所有默认的JVM选项。 然后我可以针对正在运行的JVM进程查询其中的任何一个以查明该特定JVM使用的是什么相同的默认值或覆盖的不同值。 下一个屏幕快照演示了如何通过运行java -XX:PrintFlagsFinal提供一小部分输出。 假设我在上面的输出中注意到一个名为PrintHeapAtGC的标志并想知道它是否在我的特定Java应用程序中设置 -XX:PrintHeapAtGC表示已设置 -XX:-PrintHeapAtGC表示未设置。 我可以让jinfo告诉我它的设置是什么请注意在这种情况下我选择使用jcmd而不是jps来确定Java进程ID 由于冒号后和“ PrintHeapAtGC”之前的减号-而不是加号我们知道对于具有指定ID的Java进程此功能已关闭。 事实证明jinfo的作用不仅仅让我们看。 这也让我们感动。 下一个屏幕快照显示了使用jinfo更改此选项。 如上一个屏幕快照所示我可以通过使用相同的命令查看标志的设置来关闭和打开布尔样式的JVM选项但是在标志名的前面加上加号来打开或减去它签署-将其关闭。 在刚刚显示的示例中我关闭了PrintGCDateStamps 将其重新打开并在这些更改之间监视其设置。 并非所有的JVM选项都是布尔条件。 在这些情况下通过将等号和标志值后面的新值串联起来可以为其分配新值。 同样重要的是要注意目标JVM您试图窥视并接触jinfo的目标JVM将不允许您更改其所有JVM选项设置。 在这种情况下您可能会看到堆栈跟踪并显示消息“目标VM中的命令失败”。 除了显示当前正在运行的JVM的选项并允许对其中一些选项进行更改之外 jinfo还允许您将该JVM使用的系统属性视为名称/值对。 下一个屏幕快照中对此进行了演示并显示了输出的一小部分。 运行jinfo的最简单方法可能就是仅提供所讨论的Java进程的PID以外的任何参数并同时显示JVM选项非默认值和命令行和系统属性。 运行jinfo -help提供简要的用法详细信息。 其他重要细节可在jinfo工具的Oracle文档中找到。 这些细节包括常见的提醒涉及这些工具时该提示是“实验性的不受支持”并且“将来的JDK版本可能不可用”。 我们还警告我们Windows上的jinfo需要dbgeng.dll或已安装的Windows调试工具的可用性。 尽管我之前在VisualVMjinfo和更多内容以及获得JVM运行时信息一文中已经引用了方便的jinfo命令行工具但它是一个足够便利的工具足以证明它本身就是一个帖子。 作为命令行工具它具有与命令行工具通常相关的优点例如相对轻量级可以很好地与脚本一起使用以及在无头环境中工作。 翻译自: https://www.javacodegeeks.com/2014/08/jinfo-command-line-peeking-at-jvm-runtime-configuration.htmljvm jinfo 参数