当垃圾收集事件运行时,它会在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培训,可以在短时内学有所成,快速上岗。