需要api才能获得CPU& java中当前进程或应用程序的内存使用情况。
我得到了一个api来获得完整系统的cpu使用,但我需要特定的进程。(getSystemCpuLoad
OperatingSystemMXBean
接口)
提前致谢
答案 0 :(得分:6)
如果您使用其他OperatingSystemMXBean
,则可以获取该数据。
检查导入的包: com.sun.management.OperatingSystemMXBean 。
import java.lang.management.ManagementFactory;
import com.sun.management.OperatingSystemMXBean;
public class Test {
public static void main(String[] args) {
OperatingSystemMXBean operatingSystemMXBean =
(OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
System.out.println(operatingSystemMXBean.getProcessCpuLoad());
}}
如果我没弄错的话,这个类包含在rt.jar中,存在于你的java运行时中。
答案 1 :(得分:4)
有好消息和坏消息。坏消息是使用纯Java以编程方式查询CPU使用情况是不可能的。根本就没有API。建议的替代方法可能使用Runtime.exec()来确定JVM的进程ID(PID),调用外部的,特定于平台的命令(如ps),并解析其输出以获取感兴趣的PID。但是,这种方法充其量是脆弱的。
然而,好消息是,可以通过跨越Java并编写一些通过Java Native Interface(JNI)与Java应用程序集成的C代码行来实现可靠的解决方案。
答案 2 :(得分:0)
一旦有了pid,就可以使用jstat -gc [insert-pid-here]查找有关垃圾收集堆行为的统计信息。
jstat -gccapacity [在此处插入-pid-]将显示有关内存池生成和空间功能的信息。
jstat -gcutil [在此处插入-pid-]将显示每一代的利用率,以其容量的百分比表示。有助于快速了解使用情况。