做汽车介绍视频的网站吗,营销网站建设文章,seo 视频,初中学历怎么提升大专学历总是有下一个JVM表现不佳。 而且#xff0c;您内心深知#xff0c;如果您只有少数启动选项可以公开一些有关正在发生的事情的信息#xff0c;那么您可能就有机会真正修复该死的东西。 但是不#xff0c;您需要的标志#xff08; -XX#xff1a; HeapDumpOnOutOfMemoryErr… 总是有下一个JVM表现不佳。 而且您内心深知如果您只有少数启动选项可以公开一些有关正在发生的事情的信息那么您可能就有机会真正修复该死的东西。 但是不您需要的标志 -XX HeapDumpOnOutOfMemoryError或-XX PrintGCDetails 始终丢失。 因此您可以悲痛地耸耸肩杀死受苦的JVM更改启动参数并祈祷问题的情况在重启后得以重现。 有时确实如此现在您可能有足够的证据来进行下一步工作并开始解决根本原因。 所描述的方法的问题很明显–您需要进行一次额外的重新启动而不是单次中断才能选择那些令人讨厌的调试选项。 事实上有一种解决方法有时将其添加到您的武库可能会是有益的。 资讯 JDK捆绑包中隐藏了一个不错的小实用程序。 jinfo是一个命令行实用程序用于从正在运行的Java进程中收集配置信息。 但是有趣的部分是使用-flag选项 jinfo实用程序可以为指定的Java进程动态调整某些Java VM标志的值。 这样的标志的列表是有限的但是在某些情况下仍然有用。 可以通过以下命令检查JVM上此类标志的完整列表 my-precious me$ java -XX:PrintFlagsFinal -version|grep manageableintx CMSAbortablePrecleanWaitMillis 100 {manageable}intx CMSWaitDuration 2000 {manageable}bool HeapDumpAfterFullGC false {manageable}bool HeapDumpBeforeFullGC false {manageable}bool HeapDumpOnOutOfMemoryError false {manageable}... cut for brevity ...bool PrintGC false {manageable}bool PrintGCDateStamps false {manageable}bool PrintGCDetails false {manageable}bool PrintGCTimeStamps false {manageable} 该-XX PrintFlagsFinal列出所有JVM选项在外面的“ 管理 ”选项目前的兴趣。 这些可以通过JDK管理界面 com.sun.management.HotSpotDiagnosticMXBean API 动态写入。 同样的MBean也通过JConsole发布。 按照我的喜好命令行版本要方便得多。 示例如何使用jinfo 作为如何使用jinfo的示例让我们动态地在运行的JVM上打开GC日志记录 my-precious me$ jps
12278 HighAllocationRate
12279 Jps
12269 JConsole
my-precious me$ jinfo -flag PrintGCDetails 12278
my-precious me$ jinfo -flag PrintGC 12278
my-precious me$ 该实用程序通过打开-XX PrintGC和-XX PrintGCDetails选项来打开GC日志记录。 与命令行参数的行为的细微差别在于您必须通过jinfo同时指定PrintGCDetails和PrintGC选项。 如果您是通过启动脚本设置参数的则只需-XX PrintGCDetails即可 因为它会自动打开-XX PrintGC 。 不过检查标准输出后12278 PID的GC日志开始顺利滚动 ...
[GC (Allocation Failure) [PSYoungGen: 876416K-102624K(909312K)] 1094420K-320820K(1161216K), 0.2173131 secs] [Times: user0.74 sys0.00, real0.22 secs]
...
[GC (Allocation Failure) [PSYoungGen: 890304K-102240K(917504K)] 1108924K-320956K(1169408K), 0.2446639 secs] [Times: user0.82 sys0.01, real0.25 secs]
... 关闭日志记录是类似的–您只需要调用jinfo -flag -PrintGCDetails 12278和jinfo -flag -PrintGC 12278命令即可删除日志消息。 有了这些知识我只能希望它将为您节省一两天的故障排除时间。 假设您不是性能监控工具例如Plumbr的满意用户在这种情况下您一开始就不会遇到此类需求。 翻译自: https://www.javacodegeeks.com/2015/03/turning-on-gc-logging-at-runtime.html