我正在写一个Java小程序到不同的硬件下运行不同。 举例来说,如果我知道一台计算机有大量的RAM,但微弱的处理器,我可以改变一段时间内存权衡的平衡。 能够发现在其上运行applet可帮助CPU的确切品牌和型号。 有了这样的信息,让我到基准我针对不同的系统软件,并找到瓶颈。
一般来说就是我要找的是:
- 核心和/或处理器数量
- 32位和64位CPU
- CPU缓存行大小
- L1,L2,L3高速缓存的大小
- 缓存的设置关联
- TLB的大小
- 确切让不同的CPU /型号信息
- FSB信息
- RAM容量
- 交换/虚拟存储器的量
- 其中小程序正在运行的JVM
- 操作系统上运行的JVM
- 系统负载
- 二手/闲置籽粒线程数
- 互联网连接的带宽
- 可用内存
- 在使用显卡
- 如果操作系统正在显现
- 在使用网络资源
任何的烤成Java Applets的信息。 是否有发现任何的信息库? 小程序基准测试工具来发现/猜出一些呢? 任何聪明的技巧,你能想到的?
是他们被阻止计算机硬件的任何方面。 也就是说,可能的Java小程序检测到一些正在使用或不可用,试图访问它和被拒绝(可能是特定的TCP端口或图形加速器)。
免责声明:我知道,我们在乎的硬件违背不关心硬件的Java的思想。 虽然评论指出这一点可能对于看这个问题的其他读者有帮助,请注意,这样的答案是不是我所期待的。
编辑
添加了更多的信息:
java.lang中。 管理提供了在JVM上运行的系统上的各种信息。
java.lang.management。 OperatingSystemMXBean规定:
- getAvailableProcessors()可用的处理器当量数Runtime.availableProcessors()
- getSystemLoadAverage()系统中的系统负载平均为最后一分钟上的平均负载。
java.lang.management。 ManagementFactory
getGarbageCollectorMXBeans()返回一个列表ofGarbageCollectorMXBeans。 每个GarbageCollectorMXBean可以查询以下信息:
- getCollectionCount() GC的数目已使用此豆发生。
- getCollectionTime()近似毫秒气相色谱仪之间经过累计时间。 (注:Java虚拟机实现可能使用高分辨率定时器,以测量经过的时间。)
- 的getName()的内存管理器的名称。
- getMemoryPoolNames()的内存池,这个GC管理。
getThreadMXBean()返回ThreadMXBean的 ,其提供:
- getCurrentThreadCpuTime()返回总CPU时间在纳秒当前线程。 如果实现用户模式时间和系统模式时间区分,返回的CPU时间是当前线程在用户模式或系统模式中执行的时间量。
- getRuntimeMXBean返回RuntimeMXBean
- getUptime()以毫秒为单位的Java虚拟机的正常运行时间。
- getStartTime()启动Java虚拟机的时间(ms)。
- getInputArguments()返回传递给其中不包括的参数与主方法的Java虚拟机中的输入参数。
- getCompilationMXBean返回CompilationMXBean
- 的getName()的JIT的名字
- getTotalCompilationTime()以毫秒为单位花费的时间编译代码。