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

标签 c# java windows process-monitoring

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

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

无法选择 JVM,即我们不能要求我们的客户应使用实现 Windows 操作系统特定功能的特定 JVM。

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

我们也可以自己用 C++ 或 C# 实现 DLL,我需要在哪里查看如何最有效地完成此操作?

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

最佳答案

内存部分,看Runtime的几个内存相关的方法. 要获取占用的内存,请尝试以下操作:

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

我还没有尝试过,但是对于 CPU 负载,请查看 following . getSystemLoadAverage() 方法应该可以做到这一点。

希望这对您有所帮助!

关于c# - Windows 上的 Java 需要记录 CPU 负载和类似的操作系统特定性能信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845859/

相关文章:

c# - C#泛型之间的类型转换有什么规则吗?

c# - 在 C# 中使用小数

c# - 重载 c# 变量

windows - 哪些错误/异常会触发 Windows 错误报告?

c# - 自动更新桌面应用程序

c# - 如何在不打开文件的情况下检查文件是否已在 C# 中完成复制

java - Spring Boot Admin中的Hazelcast可通过Docker Swarm运行2个实例

java - 数组上出现空异常

java - 使用 Ant 和 Eclipse 创建 Struts 1.X 项目

c# - 为什么在 Windows 7(.net 3.5) 中运行的应用程序在 Win8(.net4.5) 中无法运行