Eth*_*man 7 java benchmarking operating-system
我正在编写一个Java applet,在不同的硬件下运行不同.例如,如果我知道计算机有大量的RAM但是处理器很弱,我可以改变一些时间内存权衡的平衡.能够发现运行applet的CPU的确切品牌和型号可能会有所帮助.拥有这些信息将使我能够针对不同的系统对我的软件进行基准测试并找到瓶颈.
一般来说我正在寻找的是:
是否有任何此类信息都嵌入到Java Applet中.是否有用于查找此类信息的库?Applet基准测试工具来发现/猜测其中的一些?你能想到任何聪明的技巧吗?
他们的计算机硬件的任何方面都是阻塞的.也就是说,Java applet可以通过尝试访问它并被拒绝(可能是特定的TCP端口或图形加速器)来检测某些内容正在使用或不可用.
免责声明:我知道关心硬件违背了不关心硬件的Java意识形态.虽然评论指出这可能对其他阅读此问题的读者有所帮助,但请注意,这些答案并非我所期待的.
编辑
添加了其他信息:
java.lang中.management提供有关运行JVM的系统的各种信息.
java.lang.management.OperatingSystemMXBean提供:
java.lang.management.ManagementFactory
getGarbageCollectorMXBeans()返回GarbageCollectorMXBeans列表.可以查询每个 GarbageCollectorMXBean以获取以下信息:
getThreadMXBean()返回 ThreadMXBean,它提供:
很容易获得的是通过System.getProperties(或System.getProperty)方法可访问的信息.
例如,os.name将返回操作系统的名称.在我的系统上,我得到Windows XP了结果.
一些System.getProperties似乎可由applet访问的信息包括:
java.vm.version - JVM的版本.java.vm.vendor - JVM的供应商名称.java.vm.name - JVM的名称.os.name - 操作系统的名称.(例如Windows XP)os.arch - 系统架构.(例如x86)os.version - 操作系统的版本.(例如5.1)java.specification.version - JRE规范版本.以上不是一个全面的列表,但它可以提供一些关于系统是什么的想法.
应该注意的是,并非所有通过它可用的属性都System.getProperties可以被读取,因为对于某些属性,安全管理器将导致AccessControlException.当我尝试读取该java.home属性时,抛出异常.
要获取导致AccessControlException默认情况的属性,可能必须采取措施为applet提供权限以执行其中一些信息.(这里是一个链接到安全限制一节的课:小应用程序从Java教程.)
该Runtime课程可以提供以下信息:
Runtime.availableProcessors方法可供JVM使用的处理器(或核心,或逻辑线程)数量.freeMemory,maxMemory和totalMemory.除了默认System和Runtime类提供的信息之外,可能还需要调用操作系统,这与平台有关.
编辑
" 课程:Java教程的小程序"中的 " 获取系统属性"页面提供了可以读取的属性列表,以及小程序无法读取的属性列表.
| 归档时间: |
|
| 查看次数: |
7171 次 |
| 最近记录: |