如果是这样的话,那该怎么做呢?我正在为学校做一个团队项目。我认为Java实际上不能直接访问硬件,因为这会使它很难跨平台。我需要知道这一点,因为在快速搜索之后,我没有找到任何东西,而我的团队成员(他们想做这件事,想使用Java)似乎不确定如何继续下去-显然在搜索了比我多得多的东西之后。
wlwcrazw1#
您的权利在于您不能直接从Java访问硬件(除非您调用本机代码,但这不是您所追求的),因为它运行在沙箱环境中,即Java虚拟机(JVM)。但是,您可以从JVM中获得一些基本信息,这些信息是从底层操作系统收集的。
brqmpdu12#
您要查找的是SIGAR API
Sigar API提供了一个便携式接口,用于收集系统信息,例如:
1.系统内存、交换、cpu、平均负载、正常运行时间、登录1.每进程内存、CPU、凭据信息、状态、参数、环境、打开的文件1.文件系统检测和指标1.网络接口检测、配置信息和指标
vxbzzdmp3#
使用原生API能够获得的信息量非常小,因为您的程序通常只知道它所在的VM。但是,您可以使用call out to the command line,运行本机应用程序并解析结果,但是在Java应用程序中这不是一种特别好的形式,因为您失去了通常与该语言相关的跨平台优势。
yxyvkwin4#
您可以使用System.getEnv()获取有关处理器的一些基本信息。您还可以使用Runtime.getRuntime()--有关详细信息,请参见R. Kettelerij的响应。另一种选择是使用JMX。例如,MemoryMXBean提供了一些关于RAM使用情况(堆和非堆)的信息。
2g32fytz5#
对于任何寻找截至2023年仍在维护的库的人,请查看OSHI
5条答案
按热度按时间wlwcrazw1#
您的权利在于您不能直接从Java访问硬件(除非您调用本机代码,但这不是您所追求的),因为它运行在沙箱环境中,即Java虚拟机(JVM)。
但是,您可以从JVM中获得一些基本信息,这些信息是从底层操作系统收集的。
brqmpdu12#
您要查找的是SIGAR API
概述
Sigar API提供了一个便携式接口,用于收集系统信息,例如:
1.系统内存、交换、cpu、平均负载、正常运行时间、登录
1.每进程内存、CPU、凭据信息、状态、参数、环境、打开的文件
1.文件系统检测和指标
1.网络接口检测、配置信息和指标
大多数操作系统都提供这些信息,但每个操作系统都有自己的提供方式。SIGAR为开发人员提供了一个API来访问这些信息,而不管底层平台是什么。核心API是用纯C实现的,目前绑定了Java、Perl、Ruby、Python、Erlang、PHP和C#。
vxbzzdmp3#
使用原生API能够获得的信息量非常小,因为您的程序通常只知道它所在的VM。
但是,您可以使用call out to the command line,运行本机应用程序并解析结果,但是在Java应用程序中这不是一种特别好的形式,因为您失去了通常与该语言相关的跨平台优势。
yxyvkwin4#
您可以使用System.getEnv()获取有关处理器的一些基本信息。
您还可以使用Runtime.getRuntime()--有关详细信息,请参见R. Kettelerij的响应。
另一种选择是使用JMX。例如,MemoryMXBean提供了一些关于RAM使用情况(堆和非堆)的信息。
2g32fytz5#
对于任何寻找截至2023年仍在维护的库的人,请查看OSHI