gc日志一般关注什么_Java架构师必懂的GC日志知识
在Java,Android,C#等中,GC是自動的,而在幾種前代編程語言(C,C ++)中,程序員必須明確編寫代碼才能釋放對象。 所以,這對于Java,Android和C#應用程序開發(fā)人員來說是一個很大的方便。 但這種自動垃圾收集不是免費的,它有一個代價。 自動GC可以對以下方面產生比較明顯的的影響:
程序響應時間
CPU
內存
程序響應時間
在進行自動GC對象,整個應用程序必須間歇性地暫停,以標記正在使用的對象,并清除未使用的對象。 在這個暫停期間,應用程序中正在運行的所有客戶端處理將被凍結(即凍結)。 根據您配置的GC算法和內存設置的類型,暫停時間可以從幾毫秒到幾秒到幾分鐘。 因此,垃圾收集可以顯著影響您的應用程序SLA(服務級別協(xié)議)。
CPU
GC消耗了大量的CPU時間偏。 每個應用程序將有成千上萬個存在內存中的對象。 內存中的每個對象都應定期進行調查,看它們是否在使用中。 如果正在使用,誰在引用它? 這些引用仍然活躍嗎? 如果他們沒有被使用,他們應該從內存中移除。 所有這些調查和計算都需要大量的CPU能力。
內存
當然,糟糕的GC配置會導致高內存消耗,反之亦然。 在飽和其他資源(CPU,網絡帶寬,存儲)之前,大多數應用程序首先飽和內存。 大多數應用程序升級其EC2實例大小,以獲得額外的內存,而不是獲得額外的CPU或網絡帶寬。
因此,為了讓您的云托管服務提供商擁有一流的SLA并減少費用,您的應用程序的垃圾收集必須能夠有效運行。 為了研究和優(yōu)化垃圾回收對應用程序性能的影響,必須啟用垃圾回收日志。 除此之外,垃圾收集日志可以用來解決應用程序中與內存有關的問題。
啟用GC日志
GC日志記錄可以通過在應用程序啟動過程中傳遞下面提到的系統(tǒng)屬性來啟用。
Java 8之前是這樣配置的:-XX:+PrintGCDetails -Xloggc:,例如我們的項目是:-XX:+PrintGCDetails -Xloggc:/opt/tmp/myapp-gc.log
Java 9是這樣的配置的:-Xlog:gc:file=,我們的項目的寫法就是:-Xlog:gc:file=/opt/tmp/myapp-gc.log
怎么分析GC日志
高級Java架構師必懂的GC日志知識
GC日志具有豐富的信息,但是理解GC日志并不容易。 沒有足夠的文檔來解釋GC日志格式。 最重要的是,GC日志格式不是標準化的。 它的性能因JVM供應商(Oracle,IBM,HP,Azul等),Java版本(1.4,5,6,7,8,9),GC算法(串行,并行,CMS,G1,Shenandoah),GC系統(tǒng)屬性 (-XX:+ PrintGC,-XX:+ PrintGCDetails,-XX:+ PrintGCDateStamps,-XX:+ PrintHeapAtGC ...)。 基于這種排列和組合,很容易有60多種不同的GC日志格式。
因此,為了分析GC日志,強烈建議使用GC日志分析工具,如GCeasy,HPJmeter。 這些工具解析GC日志,并生成數據的良好圖形可視化,報告關鍵性能指標和其他一些有用的指標。
GCeasy是一個很棒的工具。你可以試著去使用使用。對大家的分析有很大的幫助。
總結
以上是生活随笔為你收集整理的gc日志一般关注什么_Java架构师必懂的GC日志知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ele表格操作区根据数据_Vue数据绑定
- 下一篇: jmeter聚合报告如何添加单位_JMe