當垃圾收集事件運行時,它會在Java應用層花費大量時間。它還在操作系統/內核層花費一定的時間。對垃圾收集感興趣的同學可以參加java培訓,可以獲得快速有效的學習。
“用戶”時間:
垃圾收集器在 Java 應用程序層花費的時間稱為“用戶”時間。以下是“用戶”時間的原因:
1.垃圾收集器必須標記所有對象并識別具有活動引用的對象。
2.它必須驅逐內存中未引用的對象。
“系統”時間:
垃圾收集器在操作系統/內核層花費的時間稱為“系統”時間。以下是“系統”時間的原因:
1.當需要內存時,應用程序會向操作系統請求額外的內存。將內存分配給JVM需要一些時間。一旦內存壓力消失,JVM會將內存交還給操作系統。這種解除分配也需要時間。
2.JVM有時可能會請求大頁面(比如2mb大小/頁面)。如果操作系統無法找到連續的空閑空間來分配2mb頁面,那么它將停止所有正在運行的進程,并開始移動數據以找到連續的空閑空間。這需要時間。在java培訓中,有很多關于垃圾收集的培訓課程,在專業老師的教學指導下,可以很全面地掌握GC的相關知識和技能。
3.JVM在/tmp/hsperfdata_(用戶名)文件。當GC事件運行時,該文件得到更新。當有大量磁盤I/O時,linux內核線程偶爾會阻止GC線程更新該文件。因此,大量的磁盤I/O活動會增加“系統”時間。
4.由于內存不足,操作系統可能會將您的應用程序換入和換出內存。該交換時間將被報告為“系統”時間。
5.有時,操作系統中可能存在某些問題(如系統故障、內存引用錯位、浮點異常),在這種情況下,垃圾收集器將不得不在操作系統/內核層花費更多時間。
CPU時間:
CPU時間是應用程序花費在垃圾收集上的總時間。它基本上是“用戶”時間和“系統”時間的總和。想要了解有關垃圾收集的更多知識,可以報名參加java培訓來學習,在專業老師的教學指導下,你可以很快掌握垃圾收集的處理方法和使用技能。