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

什么是垃圾回收日志,線程轉(zhuǎn)儲(chǔ),堆轉(zhuǎn)儲(chǔ)?

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

0

1468

0

垃圾回收日志 線程轉(zhuǎn)儲(chǔ) 堆轉(zhuǎn)儲(chǔ) Java JVM

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

Java虛擬機(jī)(JVM)生成3個(gè)關(guān)鍵工件,這些工件對(duì)于優(yōu)化性能和解決生產(chǎn)問題很有用。這些工件是:

  1. 垃圾收集(GC)日志

  2. 線程轉(zhuǎn)儲(chǔ)

  3. 堆轉(zhuǎn)儲(chǔ)

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

1.垃圾收集日志

a)什么是GC日志?

GC日志包含垃圾回收事件的相關(guān)信息。它將指示運(yùn)行了多少個(gè)GC事件,它們是什么類型的GC事件(即,Young GC或Full GC),每個(gè)GC事件將應(yīng)用程序暫停多長(zhǎng)時(shí)間,每個(gè)GC事件回收了多少個(gè)對(duì)象。

b)GC日志的外觀如何?

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

c)在哪里使用GC日志?

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

d)如何生成GC日志?

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

對(duì)于Java版本直至8:

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

對(duì)于從9開始的Java版本:

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

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

e)如何理解GC日志?

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

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

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

2.線程轉(zhuǎn)儲(chǔ)

a)什么是線程轉(zhuǎn)儲(chǔ)?

線程轉(zhuǎn)儲(chǔ)是某個(gè)時(shí)間點(diǎn)在應(yīng)用程序中運(yùn)行的所有線程的快照。它包含有關(guān)應(yīng)用程序中每個(gè)線程的所有信息,例如:線程狀態(tài),線程ID,本機(jī)ID,線程名稱,堆棧跟蹤,優(yōu)先級(jí)。

b)線程轉(zhuǎn)儲(chǔ)的外觀如何?

示例線程轉(zhuǎn)儲(chǔ)可以在這里找到。

c)在哪里使用線程轉(zhuǎn)儲(chǔ)?

線程轉(zhuǎn)儲(chǔ)主要用于解決生產(chǎn)問題,例如CPU尖峰,應(yīng)用程序無響應(yīng),響應(yīng)時(shí)間短,線程掛起,內(nèi)存消耗高。

d)如何生成線程轉(zhuǎn)儲(chǔ)?

可以使用8個(gè)不同的選項(xiàng)從正在運(yùn)行的應(yīng)用程序中捕獲線程轉(zhuǎn)儲(chǔ)。進(jìn)行線程轉(zhuǎn)儲(chǔ)的最常見選項(xiàng)是使用“ jstack”工具。jstack工具位于JDK_HOME bin文件夾中。這是捕獲線程轉(zhuǎn)儲(chǔ)所需發(fā)出的命令:

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

其中pid:是應(yīng)捕獲其線程轉(zhuǎn)儲(chǔ)的應(yīng)用程序的進(jìn)程ID,而file-path:是將寫入線程轉(zhuǎn)儲(chǔ)的文件路徑。

e)如何理解線程轉(zhuǎn)儲(chǔ)?

這是一個(gè)視頻講座,詳細(xì)介紹了如何理解線程轉(zhuǎn)儲(chǔ)。

f)使用哪些工具來分析線程轉(zhuǎn)儲(chǔ)?

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

3.堆轉(zhuǎn)儲(chǔ)

a)什么是堆轉(zhuǎn)儲(chǔ)?

堆轉(zhuǎn)儲(chǔ)是某個(gè)時(shí)間點(diǎn)應(yīng)用程序內(nèi)存的快照。它包含信息,例如內(nèi)存中的對(duì)象是什么,它們攜帶的值是什么,大小是什么,它們引用的其他對(duì)象是什么。

b)堆轉(zhuǎn)儲(chǔ)的外觀如何?

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

c)堆轉(zhuǎn)儲(chǔ)在哪里使用?

堆轉(zhuǎn)儲(chǔ)主要用于解決與內(nèi)存相關(guān)的OutOfMemoryError問題。

d)如何生成堆轉(zhuǎn)儲(chǔ)?

可以使用7個(gè)不同的選項(xiàng)從運(yùn)行的應(yīng)用程序中捕獲堆轉(zhuǎn)儲(chǔ)。進(jìn)行堆轉(zhuǎn)儲(chǔ)的最常見選項(xiàng)是使用“ 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進(jìn)程ID,應(yīng)捕獲其堆轉(zhuǎn)儲(chǔ),而file-path:是將堆轉(zhuǎn)儲(chǔ)寫入其中的文件路徑。

e)如何理解堆轉(zhuǎn)儲(chǔ)?

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

f)使用哪些工具來分析堆轉(zhuǎn)儲(chǔ)?

以下是使用最廣泛的堆轉(zhuǎn)儲(chǔ)分析工具:Eclipse MAT,HeapHero和JVisualVM。