java 打开gc日志_在运行时打开GC日志记录
java 打開gc日志
總是有下一個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: user=0.74 sys=0.00, real=0.22 secs] ... [GC (Allocation Failure) [PSYoungGen: 890304K->102240K(917504K)] 1108924K->320956K(1169408K), 0.2446639 secs] [Times: user=0.82 sys=0.01, real=0.25 secs] ...關閉日志記錄是類似的–您只需要調用jinfo -flag -PrintGCDetails 12278和jinfo -flag -PrintGC 12278命令即可刪除日志消息。
有了這些知識,我只能希望它將為您節省一兩天的故障排除時間。 假設您不是性能監控工具(例如Plumbr)的滿意用戶之一,在這種情況下,您首先不會遇到此類需求。
翻譯自: https://www.javacodegeeks.com/2015/03/turning-on-gc-logging-at-runtime.html
java 打開gc日志
總結
以上是生活随笔為你收集整理的java 打开gc日志_在运行时打开GC日志记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++返回指针时候注意提防_Java 8
- 下一篇: (2018ddos破解软件)