https://michaelscodingspot.com/cpu-bound-memory-bound/ 优化.NET 应用程序 CPU 和内存的11 个实践 凡事都有其限度,对吧?汽车只能开这么快,进程只能使用这么多内存,程序员只能喝这么多咖啡.我们的生产力受到资源的限制,我们有能力更好或更差地利用它们.尽可能接近其极限使用我们的每一种资源是我们的目标,我们希望使用我们的 CPU 和内存的每一点,否则我们会为昂贵的机器多付钱. 然而,若是我们使用了过多的资源,我们就有可能导致性能问题.服务
CPU过高 这类问题可以使用 top 命令观察一些,CPU 是不是都被 Java 程序占用了.比如下面这个截图: 服务器的 CPU 大多都被 Java 占用了.这正是我们之前生产上 CPU 过高的一个截图. 服务其CPU 还能超过 100%原因 在 Linux 上,多核 CPU 就会超过 100%.top 命令显示的是你的程序占用的 cpu 的总数,也就是说如果你是 4 核 cpu 那么 cpu 最高占用率可达 400%,top 里显示的是把所有使用率加起来. CPU 过高,这说明程序在进行计算
今天一个电话面试问了这个问题.回来查了下答案,自己也顺带操作一遍,做个记录.之前知道jstack工具可以查看线状态这些.比如死锁这些,主要是之前不知道top -H -p pid这个命令的使用,这命令可以看到进程下面线程信息,拿到线程ID,然后再结合jstack命令使用就可以解决这个问题了.下面记录一下具体的操作步骤: 1.打个jar包丢到机器上运行 package com.nijunyang.test; public class TestApplication { public static v