當垃圾收集事件運行時,它會在Java應用層花費大量時間。它還在操作系統/內核層花費一定的時間。想學習java技術的同學,不妨報個Java培訓班,有明確清晰的學習路線,理論知識+實戰操作,可以獲得快速提升。
用戶時間:
垃圾收集器在Java應用層花費的時間在GCeasy報告中被報告為“用戶”時間。以下是“用戶”時間的原因:
a、垃圾收集器必須標記所有的對象&用活動引用來標識那些對象。
b、它必須驅逐內存中未被引用的對象。
系統時間:
垃圾收集器在操作系統/內核層花費的時間在GCeasy報告中被報告為“系統”時間。以下是“系統”時間的原因:
a、當需要內存時,應用程序會向操作系統請求額外的內存。將內存分配給JVM需要一些時間。一旦內存壓力消失,JVM會將內存交還給操作系統。這種解除分配也需要時間。
b、JVM有時可能會請求大頁面(比如2mb大小/頁面)。如果操作系統無法找到連續的空閑空間來分配2mb頁面,那么它將停止所有正在運行的進程,并開始移動數據以找到連續的空閑空間。這需要時間。在java培訓中,培訓課程不僅注重理論,更注重項目的實戰能力,能夠讓你快速適應企業開發的進度,成為企業所需要的Java人才。
c、JVM在/tmp/hsperfdata_(用戶名)文件中創建和寫入有關安全點和垃圾收集事件的統計信息。此文件在GC事件運行時更新。當有大量磁盤I/O時,有時linux內核線程會阻止GC線程更新此文件。因此,非常繁重的磁盤I/O活動會增加“系統”時間。
d、由于內存不足,操作系統可能會將應用程序調入或調出內存。此交換時間將報告為“系統”時間。
e、有時操作系統可能會出現某些問題(例如系統故障、內存引用未對齊、浮點異常)——在這種情況下,垃圾收集器將不得不在OS/內核層上花費更多時間。
“CPU”時間:
CPU時間是應用程序在垃圾收集中花費的總時間。它基本上是“用戶”時間和“系統”時間的總和。想從事java職業的同學可以參加java培訓,可以在短時內學有所成,快速上崗。