Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自java的Windows性能计数器_Java_Windows_Performancecounter - Fatal编程技术网

来自java的Windows性能计数器

来自java的Windows性能计数器,java,windows,performancecounter,Java,Windows,Performancecounter,我正在寻找一种在Java程序中从Windows性能监视器获取性能计数器的方法。我知道在.NET或PowerShell中获取此计数器非常容易。谁知道它在Java中是否可行?请参阅: “对于运行Java应用程序或服务的用户,Windows性能监视器(WPM)包含了大量有价值的信息,见图1。有数百(或数千)个一种称为计数器的性能统计数据,可实时使用并测量关键的系统性能因素。本文概述了从Java访问这些性能统计数据的简单方法。” 提出了三种选择: 将WPM配置为记录特定的性能计数器:WPM可以获取一组可

我正在寻找一种在Java程序中从Windows性能监视器获取性能计数器的方法。我知道在.NET或PowerShell中获取此计数器非常容易。谁知道它在Java中是否可行?

请参阅:

“对于运行Java应用程序或服务的用户,Windows性能监视器(WPM)包含了大量有价值的信息,见图1。有数百(或数千)个一种称为计数器的性能统计数据,可实时使用并测量关键的系统性能因素。本文概述了从Java访问这些性能统计数据的简单方法。”

提出了三种选择:

  • 将WPM配置为记录特定的性能计数器:WPM可以获取一组可配置的计数器,并以配置的频率将它们记录到文件中。Windows XP和Windows 2003还允许将WPM数据直接记录到ODBC(开放数据库连接)数据源。一旦这些数据被记录到其最终目的地,使用java.io或java.nio包读取日志文件就足够简单了
  • WPM的本机(Java本机接口)接口
  • NSClient4j是一个纯Java客户机,它提供了一个简单的API来访问WPM性能计数器数据。它使用名为NSClient的Windows服务

  • 推荐的方法似乎是选项3…

    FWIW,至于使用NSClient4j库的“推荐方法”(来自引用的2004年文章),该库()不再可用(如我在2020年写的)。虽然我们可以通过archive.org等网站找到网站和代码,但我还是忍不住认为它已经过时了。我很想知道是否有更好的选择。(参考文章中没有详细说明JNI的内容,使用日志记录当然不是从Java直接获取perfmon计数器的连接。)这个问题在2020年与2014年编写时一样重要。我刚刚在当前的单一答案中添加了一条评论,解释了为什么它似乎不是当前的“正确”答案。所以我很想听听其他人是否还有其他解决方案。