Windows上的Java需要记录CPU负载和类似的操作系统特定性能信息

本文关键字:操作系统 信息 性能 Java 上的 记录 负载 CPU Windows | 更新日期: 2023-09-27 18:12:01

有一个运行在windows机器上的Java库需要记录有关操作系统的信息,如CPU负载,JVM占用的内存等,我很确定Java本身无法获得,因为它是特定于操作系统的。

此信息需要在此库的日志中,以便向客户端指出由于库无法获得足够的资源而导致某些操作失败。

选择JVM是不可能的,也就是说,我们不能要求我们的客户端应该使用实现windows操作系统特定功能的特定JVM。

是否有一个可以通过JNI使用的windows库(DLL)或API ?

我们也可以在c++或c#中实现DLL,我需要在哪里查看如何最有效地完成?

编辑:我需要访问有关JVM本身进程的数据,我想我只能通过本机Windows API获得。所以我想我必须实现一个小的C程序,并通过JNI将其链接为本机DLL。有什么建议吗?

Windows上的Java需要记录CPU负载和类似的操作系统特定性能信息

对于内存部分,请查看运行时的几个与内存相关的方法。要获取已占用的内存,请尝试以下操作:

Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.totalMemory() - runtime.freeMemory());

我还没有尝试过,但是对于CPU负载,请查看以下内容。应该由getSystemLoadAverage()方法来完成。

希望这对你有帮助!

如果java.lang. net不能满足您的需求。运行时,你可以走JNI路线,设计一个Java API来提供你所需要的。

我不知道任何开箱即用的dll,你可以包装(与JNI),但你所追求的数据是在注册表中所谓的"性能计数器"。在linux上,你可以从/proc中读取数据。

有关性能计数器的更多信息,请参阅MSDN网站。