首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows上的Java需要记录CPU负载和类似操作系统特定的性能信息

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

Stack Overflow用户
提问于 2011-10-21 14:43:44
回答 2查看 167关注 0票数 3

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

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

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

有没有可以通过JNI使用的windows库(DLL)或API?

我们也可以自己在C++或C#中实现动态链接库,我需要在哪里查看如何才能最有效地实现这一点?

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

EN

回答 2

Stack Overflow用户

发布于 2011-10-21 14:52:30

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

代码语言:javascript
运行
复制
Runtime runtime = Runtime.getRuntime();
System.out.println(runtime.totalMemory() - runtime.freeMemory());

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

希望这能有所帮助!

票数 5
EN

Stack Overflow用户

发布于 2011-10-22 00:38:41

如果java.lang.Runtime不能满足您的需求,您可以走JNI路线,设计一个Java API来提供您所需的内容。

我不知道您可以(用JNI)包装的任何开箱即用的DLL,但是您需要的数据是在注册表中,即所谓的“性能计数器”。在linux上,你可以从/proc中读取数据。

有关Performance Counters的更多信息,请参阅MSDN站点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7845859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档