一. 问题
- while 的无限循环是否会导致 CPU 使用率飙升?
- 频繁的 Young GC 是否会导致 CPU 使用率飙升?
- 有大量线程的应用程序的 CPU 使用率高吗?
- CPU 使用率高的应用程序的线程数是否很大?
- 处于 BLOCKED 状态的线程是否会导致 CPU 使用率飙升?
- 分时操作系统中的 CPU 是消耗
us(用户态)
还是sy(内核态)
?
二. 思考
1. 我们如何计算 CPU 使用率?
CPU% = (1 - idleTime / sysTime ) * 100
-
idleTime
:CPU 的空闲时间 -
sysTime
:CPU 处于用户态和内核态的时间总和
2. 常见的 CPU 密集型操作有哪些?
人们常说,计算密集型程序就是 CPU 密集型的,那么,Java 应用程序中有哪些操作是计算密集型的呢?
下面列出常见 CPU 密集型操作:
- 频繁的 GC;如果访问量很大,可能会导致频繁的GC甚至Full GC。当调用量大时,内存分配会非常快,以至于 GC 线程会不断执行,导致 CPU 飙升。
- 序列化和反序列化。