1. 程式人生 > >Docker下使用jstat檢視jvm的GC資訊

Docker下使用jstat檢視jvm的GC資訊

Jstat指令:

    jstat命令命令格式:

    jstat [Options]vmid [interval] [count]

    引數說明:

        Options,選項,我們一般使用 -gcutil 檢視gc情況

        vmid,VM的程序號,即當前執行的java程序號

        interval,間隔時間,單位為秒或者毫秒

        count,列印次數,如果預設則列印無數次

常用指令

    1. jstat -gc pid

           可以顯示gc的資訊,檢視gc的次數,及時間。

           其中最後五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。

     2.jstat -gccapacity pid

           可以顯示,VM記憶體中三代(young,old,perm)物件的使用和佔用大小,

           如:PGCMN顯示的是最小perm的記憶體使用量,PGCMX顯示的是perm的記憶體最大使用量,

           PGC是當前新生成的perm記憶體佔用量,PC是但前perm記憶體佔用量。

           其他的可以根據這個類推, OC是old內純的佔用量。

    3.jstat -gcutil pid

           統計gc資訊統計。

    4.jstat -gcnew pid

          年輕代物件的資訊。

    5.jstat -gcnewcapacity pid

          年輕代物件的資訊及其佔用量。

    6.jstat -gcold pid

         old代物件的資訊。

    7.stat -gcoldcapacity pid

         old代物件的資訊及其佔用量。

    8.jstat -gcpermcapacity pid

         perm物件的資訊及其佔用量。

    9.jstat -class pid

         顯示載入class的數量,及所佔空間等資訊。

    10.jstat -compiler pid

         顯示VM實時編譯的數量等資訊。

    11.stat -printcompilation pid

         當前VM執行的資訊。

jstat -gccause pid 1 每格1毫秒輸出結果

jstat -gccause pid 3000 每格3秒輸出結果

圖中引數含義如下:

   S0  — Heap上的 Survivorspace 0 區已使用空間的百分比    

   S1  — Heap上的 Survivorspace 1 區已使用空間的百分比    

   E   — Heap上的 Eden space區已使用空間的百分比    

   O   — Heap上的 Old space 區已使用空間的百分比    

   P   — Perm space 區已使用空間的百分比

   YGC  — 從應用程式啟動到取樣時發生 YoungGC 的次數

   YGCT –從應用程式啟動到取樣時 Young GC 所用的時間(單位秒)    

   FGC  — 從應用程式啟動到取樣時發生 Full GC的次數

   FGCT –從應用程式啟動到取樣時 Full GC 所用的時間(單位秒)    

   GCT  — 從應用程式啟動到取樣時用於垃圾回收的總時間(單位秒)

分代垃圾回收詳述

如上圖所示,為Java堆中的各代分佈。

Young(年輕代)

年輕代分三個區。一個Eden區,兩個 Survivor區。大部分物件在Eden區中生成。當Eden區滿時,還存活的物件將被複制到Survivor區(兩個中的一個),當這個 Survivor區滿時,此區的存活物件將被複制到另外一個Survivor區,當這個Survivor去也滿了的時候,從第一個Survivor區複製過來的並且此時還存活的物件,將被複制“年老區(Tenured)”。需要注意,Survivor的兩個區是對稱的,沒先後關係,所以同一個區中可能同時存在從Eden複製過來物件,和從前一個Survivor複製過來的物件,而複製到年老區的只有從第一個Survivor去過來的物件。而且,Survivor區總有一個是空的。

Tenured(年老代)

年老代存放從年輕代存活的物件。一般來說年老代存放的都是生命期較長的物件。

Perm(持久代)

用 於存放靜態檔案,如今Java類、方法等。持久代對垃圾回收沒有顯著影響,但是有些應用可能動態生成或者呼叫一些class,例如Hibernate等,在這種時候需要設定一個比較大的持久代空間來存放這些執行過程中新增的類。持久代大小通過-XX:MaxPermSize=進行設定。

GC型別

GC有兩種型別:Scavenge GCFull GC

Scavenge GC

一般情況下,當新物件生成,並且在Eden申請空間失敗時,就好觸發ScavengeGC,堆Eden區域進行GC,清除非存活物件,並且把尚且存活的物件移動到Survivor區。然後整理Survivor的兩個區。

Full GC

對整個堆進行整理,包括Young、Tenured和Perm。Full GC比Scavenge GC要慢,因此應該儘可能減少FullGC。有如下原因可能導致Full GC:

Tenured被寫滿

Perm域被寫滿

System.gc()被顯示呼叫

上一次GC之後Heap的各域分配策略動態變化GC型別

Docker容器中使用jstat過程:


1.     列出docker容器:docker ps

2.     標準輸入和關聯終端:docker exec -it 容器ID  bash

3.     查找出java程序: ps – ef | grep java

4.     統計gc資訊統計: jstat –gcutil 466 3000 每三秒列印一次


相關推薦

Docker使用jstat檢視jvm的GC資訊

Jstat指令:    jstat命令命令格式:    jstat [Options]vmid [interval] [count]    引數說明:        Options,選項,我們一般使用 -gcutil 檢視gc情況        vmid,VM的程序號,即當前

Linux檢視USB裝置資訊

Linux下,檢視USB裝置資訊   首先需要將usbfs掛載一下,然後才能檢視。$ mount -t usbfs none /proc/bus/usb $ cat  /proc/bus/usb/devices 或者在檔案(/etc/fstab)中新增如下這句:

使用jstat檢視JVM統計資訊

溫馨提示:本篇內容基於Java 8編寫,使用不同版本可能存在部分輸出內容不符。 jstat是一個用於監視虛擬機器各種執行狀態資訊的命令列工具。可以檢視本地或者遠端虛擬機器中的類裝載、記憶體、垃圾收集、JIT編譯等執行資料。在 日常工作中,可以幫我我們去觀察J

iOS 如何在 Release 環境檢視除錯資訊

最近老在釋放環境下直接除錯,發現一個很不爽的問題,不能直接檢視除錯資訊,一些東東必須NSLog下才能列印看到的,然後po打印出來東西還都是nil,第一反應還以為傳回來值為空的。 此時我們需要在Build Setting中的優化級別重新設定下,讓其同調試模式下一樣的 正常下

Linux檢視版本資訊

檢視版本當前作業系統核心資訊 [root@node00 ~]# uname -a Linux node00 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86

linux檢視硬碟資訊、硬碟分割槽、格式化、掛載、及swap分割槽

df 命令參看硬碟資訊 -T選項, 檢視檔案系統型別 centos6檔案系統是ext4,因為設計較早,對於現今動輒上T的海量資料處理,效能較低。centos7檔案系統是xfs,適用於海量資料。這兩種

Ubuntu如何檢視GPU版本和使用資訊

nvidia-smi是用來檢視GPU版本資訊,GPU使用資訊查詢: nvidia-smi   第一欄的Fan:N/A是風扇轉速,從0到100%之間變動,這個速度是計算機期望的風扇轉速,實際情況下如

docker檢視對應的微服務日誌

首先介紹下,我們為什麼要去檢視日誌,在微服務中,我們所開發的專案 ,每個模組都是一個微服務,這是對微服務最基本的理解, 當我們的程式在執行過程中報錯時,我們不光可以在前臺頁面對你的程式碼進行除錯,更直

Linux檢視CPU資訊[/proc/cpuinfo]

最近在研究linux系統負載的時候,接觸到一些關於CPU資訊檢視的知識,和大家分享一下。通過對/proc/cpuinfo檔案中的引數的分析,也學到了不少東西。 在linux作業系統中,CPU的資訊在啟動的過程中被裝載到虛擬目錄/proc下的cpuinfo檔案中,我們可以通過

Linux用於檢視系統當前登入使用者資訊的4種方法

作為系統管理員,你可能經常會(在某個時候)需要檢視系統中有哪些使用者正在活動。有些時候,你甚至需要知道他(她)們正在做什麼。本文為我們總結了4種檢視系統使用者資訊(通過編號(ID))的方法。 1. 使用w命令檢視登入使用者正在使用的程序資訊 w命令用於顯示已經登入系統

(win和win server)dos通過wmic命令檢視硬碟和記憶體/CPU資訊(windows自帶命令檢視硬體資訊)

如何在windows系統自帶命令檢視硬體資訊,怎樣dos命令檢視硬碟和記憶體/CPU資訊?最直接的是:開始→執行→CMD開啟命令提示符,在該視窗下輸入systeminfo執行,即可看到幾乎所有想知道的系統資訊,甚至包括機器上已安裝的網絡卡及其IP。  問題描述: 如何從系統

Linux檢視系統資訊方法總結

Linux下如何檢視系統啟動時間和執行時間1.檢視/proc/uptime檔案計算系統啟動時間: cat /proc/uptime 輸出: 5113396.94 575949.85第一數字即是系統已執行的時間5113396.94秒,運用系統工具date即可算出系統啟動時間

如何在linux檢視gpu資訊

~$ lspci | grep -i vga 01:00.0 VGA compatible controller: NVIDIA Corporation GF119 [GeForce GT 610] (rev a1) 如果你想看gpu的詳細資訊,使用~$ lspci -

Linux檢視CPU資訊並且計算機器的浮點運算能力

輸入 cat /proc/cpuinfo物理CPU個數: cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 每個CPU物理核數: cat /proc/cpuinfo |grep "cpu core

linux關閉printk列印資訊以及通過網路檢視方法

我們在linux底層驅動或者kernel中呼叫的printk函式其作用是將printk的內容輸出到控制檯,但printk實質是將需要輸出的內容寫入底層環形輸出資料緩衝區,linux根據控制將資料輸出到控制檯; 基於此,我們可以在linux系統下手動關閉printk的資訊輸出

Linux如何檢視你的disk的資訊

可以使用smartctl來檢視你的disk的資訊; smartctl的disk路徑和名字可以通過命令cat /proc/partitions 來得到。 sudo smartctl -d ata -a /dev/sda smartct

CentOS用於檢視系統當前登入使用者資訊的4種方法

1. 使用w命令檢視登入使用者正在使用的程序資訊 w命令用於顯示已經登入系統的使用者的名稱,以及他們正在做的事。該命令所使用的資訊來源於/var/run/utmp檔案。w命令輸出的資訊包括: 使用者名稱稱使用者的機器名稱或tty號遠端主機地址使用者登入系統的時間空閒時間

Linux如何檢視CPU型號、個數、核數、邏輯CPU數、位數、發行版本、核心資訊、記憶體、伺服器生產廠家

【原文連結】:http://blog.csdn.net/mdx20072419/article/details/7767809 http://blog.chinaunix.net/uid-22425237-id-3496577.html ---------------

linux 檢視硬體資訊(mac,IP地址,硬碟型號,序列號等)

本機為debian 8(jessie)方法同樣使用於其他linux 系統 檢視mac和IP地址 方法一 開啟terminal輸入命令: sudo ifconfig eth0 後的 HWaddr xx:xx:xx:xx:xx:xx 即為

Linux環境檢視硬體資訊

在Linux下檢視硬體資訊的最基本方法就是利用/proc檔案系統,這個動態檔案系統裡提供了很多相關的資訊,比如: 1 2 3 4 5 6 7 8 9 10 11 12