以下内容来自林昊的《分布式JAVA应用》
us高代表用户态程序占CPU的比例较高
sy高代表内核态程序占CPU的比例较高
对java应用来说,
us高一般是因为
1. 有些线程一直处于可运行状态,比如使劲循环
2. CPU密集型操作太多,比如正则运算
3. 频繁GC
sy高一般是因为线程上下文切换过于频繁。而切换过多,一般是由于过多阻塞导致的,包括锁等待、I/O阻塞等,一个线程的阻塞会导致CPU让另一个线程上位,即上下文切换。
p.s. sy高跟系统调用过多也会有关系