Java小程序可以发现多少硬件细节?
我正在编写一个Java小程序,以便在不同的硬件下以不同的方式运行。例如,如果我知道一台计算机有大量的RAM,但处理器很弱,我可以改变一些时间-内存权衡的平衡。能够发现运行小程序的CPU的确切品牌和型号可能会有所帮助。拥有这些信息将使我能够针对不同的系统对软件进行基准测试,并找到瓶颈 一般来说,我想要的是:Java小程序可以发现多少硬件细节?,java,operating-system,benchmarking,Java,Operating System,Benchmarking,我正在编写一个Java小程序,以便在不同的硬件下以不同的方式运行。例如,如果我知道一台计算机有大量的RAM,但处理器很弱,我可以改变一些时间-内存权衡的平衡。能够发现运行小程序的CPU的确切品牌和型号可能会有所帮助。拥有这些信息将使我能够针对不同的系统对软件进行基准测试,并找到瓶颈 一般来说,我想要的是: 核心和/或处理器的数量 32位与64位CPU CPU缓存线大小 一级、二级、三级缓存的大小 设置缓存的关联性 TLB的大小 CPU上的确切品牌/型号信息 金融稳定委员会资料 内存量 交换/虚
- 核心和/或处理器的数量
- 32位与64位CPU
- CPU缓存线大小
- 一级、二级、三级缓存的大小
- 设置缓存的关联性
- TLB的大小
- CPU上的确切品牌/型号信息
- 金融稳定委员会资料
- 内存量
- 交换/虚拟内存量
- 运行小程序的JVM
- 运行JVM的操作系统
- 系统负载
- 已使用/未使用的内核线程数
- 因特网连接带宽
- 可用内存
- 使用中的图形卡
- 如果操作系统正在可视化
- 使用中的网络资源
通过(或)方法获取的信息非常简单 例如,
os.name
将返回操作系统的名称。在我的系统上,我得到的结果是windowsxp
小程序似乎可以访问的一些可用信息包括:
——JVM的版本java.vm.version
——JVM的供应商名称java.vm.vendor
——JVM的名称java.vm.name
——操作系统的名称。(例如os.name
)Windows XP
——系统架构。(例如,os.arch
)x86
——操作系统的版本。(例如os.version
)5.1
——JRE规范版本java.specification.version
系统可用的属性。getProperties
都可以读取,对于某些属性,安全管理器将导致AccessControlException
。当我试图读取java.home
属性时,抛出了一个异常
要获取默认情况下导致访问控制异常的属性,可能需要采取步骤授予小程序执行某些信息的权限。(此处是指向“发件人”部分的链接。)
运行时
类可以提供以下信息:
- 通过该方法可供JVM使用的处理器(或内核,或逻辑线程)的数量
- Java虚拟机的内存信息,如,和
系统
和运行时
提供的信息之外,类可能需要调用操作系统,这取决于平台
编辑
来自的页面提供了可读取的属性列表和小程序无法读取的属性列表。以下是更多内容:
可能能够告诉屏幕分辨率,甚至可能更多关于图形卡的信息(从使用的颜色模型)
您还可以分配一些更大的字节数组,并测量对数据的访问时间