2012-11-09 69 views
11

對於以下Java版本:java CMS gc log中的'real','user'和'sys'是什麼意思?

OpenJDK的版本 「1.6.0」
OpenJDK的運行時環境(建立1.6.0-B23)
OpenJDK的64位服務器VM(構建20.0-B11,混合模式)

隨着folllowing GC標誌:

-verbose:GC
-XX:+ UseConcMarkSweepGC
-XX:+ CMSClassUnloadingEnabled
-XX:+ PrintGCDetails
-XX:+ PrintGCDateStamps

我們更多的日誌線,如:

2012-11-09T16:46:53.438-0100:CMS-併發標記:4.039 /4.060秒] [時間:用戶= 4.09 SYS = 35.05,實= 4.06秒]

初始 「4.039/4.060秒」 應根據https://blogs.oracle.com/poonam/entry/understanding_cms_gc_logs意味着並行標記了總4.039秒CPU時間和4.060幾秒鐘的牆壁時間(包括其他的收益) r線程也)。

但是,用戶,sys和真實值在這裏意味着什麼?

+2

看一看http://stackoverflow.com/questions/556405/what-do-real-user-and-sys-mean-in-the-output-of-time1 –

+1

是啊,但是經典的unix含義:Real是掛鐘時間,User是CPU時間的數量,Sys是進程內核中CPU花費的時間量。我真的不明白這些定義在這個GC環境中是如何有意義的... – fornwall

回答

4
  1. 系統和用戶都只是CPU時間。因此,它們不包括過程被CPU阻塞或正在進行I/O等的時間。

  2. GC時間通常應與sys +用戶時間類似,但如果進程被阻塞或等待,會更高。這對於串行收集器和單個處理器盒來說是真實的。但是,在多處理器環境(使用並行收集器)中,由於有多個CPU,因此GC時間將小於sys +用戶時間。

  3. 實際時間與GC時間相似。

相關問題