中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

什么是垃圾回收日志,線程轉儲,堆轉儲?

發(fā)布于:2021-02-15 00:00:31

0

1464

0

垃圾回收日志 線程轉儲 堆轉儲 Java JVM

Java虛擬機(JVM)中的垃圾回收(GC)日志,線程轉儲和堆轉儲是什么?在本文中,我們嘗試了解這3個關鍵工件,在哪里使用它們,外觀如何,如何捕獲它們,如何分析它們及其差異。

Java虛擬機(JVM)生成3個關鍵工件,這些工件對于優(yōu)化性能和解決生產問題很有用。這些工件是:

  1. 垃圾收集(GC)日志

  2. 線程轉儲

  3. 堆轉儲

在本文中,我們嘗試了解這3個關鍵工件,在哪里使用它們,外觀如何,如何捕獲它們,如何分析它們及其差異。

1.垃圾收集日志

a)什么是GC日志?

GC日志包含垃圾回收事件的相關信息。它將指示運行了多少個GC事件,它們是什么類型的GC事件(即,Young GC或Full GC),每個GC事件將應用程序暫停多長時間,每個GC事件回收了多少個對象。

b)GC日志的外觀如何?

可以在此處找到樣本垃圾收集日志文件。

c)在哪里使用GC日志?

垃圾收集日志用于研究應用程序的GC和內存性能。它用于優(yōu)化GC暫停時間,用于確定應用程序的最佳內存大小,也用于解決與內存相關的問題。

d)如何生成GC日志?

您可以通過傳遞以下JVM參數(shù)來生成垃圾收集日志:

對于Java版本直至8:

-XX:+PrintGCDetails
-XX:+PrintGCDateStamps
-Xloggc:<file-path>

對于從9開始的Java版本:

-Xlog:gc*:file=<file-path>

file-path:是要寫入垃圾收集日志文件的位置。

e)如何理解GC日志?

垃圾收集日志格式會有所不同,具體取決于誰是您的JVM供應商(Oracle,HP,IBM,Azul等),Java版本(1.5、5、6、7、8、9、10、11、12,…),垃圾您傳遞的收集算法(串行,并行,CMS,G1,Shenandoah,Z GC)和JVM參數(shù)。因此,沒有一種可用的標準化格式。但是,這里有一個視頻教程,它試圖幫助您了解GC日志文件格式。

f)使用哪些工具來分析GC日志?

有多種垃圾收集日志分析工具。這里提供了一些受歡迎的工具:GCeasy,IBM GC和內存可視化工具,HP JMeter,Google Garbage Cat。

2.線程轉儲

a)什么是線程轉儲?

線程轉儲是某個時間點在應用程序中運行的所有線程的快照。它包含有關應用程序中每個線程的所有信息,例如:線程狀態(tài),線程ID,本機ID,線程名稱,堆棧跟蹤,優(yōu)先級。

b)線程轉儲的外觀如何?

示例線程轉儲可以在這里找到。

c)在哪里使用線程轉儲?

線程轉儲主要用于解決生產問題,例如CPU尖峰,應用程序無響應,響應時間短,線程掛起,內存消耗高。

d)如何生成線程轉儲?

可以使用8個不同的選項從正在運行的應用程序中捕獲線程轉儲。進行線程轉儲的最常見選項是使用“ jstack”工具。jstack工具位于JDK_HOME bin文件夾中。這是捕獲線程轉儲所需發(fā)出的命令:

jstack -l <pid> > <file-path>

其中pid:是應捕獲其線程轉儲的應用程序的進程ID,而file-path:是將寫入線程轉儲的文件路徑。

e)如何理解線程轉儲?

這是一個視頻講座,詳細介紹了如何理解線程轉儲。

f)使用哪些工具來分析線程轉儲?

這里是使用最廣泛的線程轉儲分析工具:fastThread,Samurai,IBM Thread&Monitor分析器,Visual VM。

3.堆轉儲

a)什么是堆轉儲?

堆轉儲是某個時間點應用程序內存的快照。它包含信息,例如內存中的對象是什么,它們攜帶的值是什么,大小是什么,它們引用的其他對象是什么。

b)堆轉儲的外觀如何?

可以在此處找到樣本堆轉儲。(注意:它將采用二進制格式。因此您實際上無法讀取它)。

c)堆轉儲在哪里使用?

堆轉儲主要用于解決與內存相關的OutOfMemoryError問題。

d)如何生成堆轉儲?

可以使用7個不同的選項從運行的應用程序中捕獲堆轉儲。進行堆轉儲的最常見選項是使用“ jmap”工具。jmap工具位于JDK_HOME bin文件夾中。這是您需要發(fā)出以捕獲的命令:

<span style="font-weight: 400;">jmap -dump:format=b,</span><span style="font-weight: 400;">
</span><span style="font-weight: 400;">file=<file-path> <pid> </span>

其中pid:是Java進程ID,應捕獲其堆轉儲,而file-path:是將堆轉儲寫入其中的文件路徑。

e)如何理解堆轉儲?

堆轉儲文件為二進制格式,并且通常較大。除此之外,它們的格式嚴重缺乏文檔。因此,您必須使用堆轉儲分析工具(在下一個問題中給出)來分析和理解它們。

f)使用哪些工具來分析堆轉儲?

以下是使用最廣泛的堆轉儲分析工具:Eclipse MAT,HeapHero和JVisualVM。