当前位置: 首页 > 面试题库 >

Java Applet可以发现多少硬件详细信息?

屠瑞
2023-03-14
问题内容

我正在编写Java小程序,以在不同的硬件下以不同的方式运行。例如,如果我知道一台计算机具有大量RAM但处理器较弱,则可以更改一些时间记忆权衡的平衡。能够找到运行小程序的CPU的确切品牌和型号可能会有所帮助。拥有此类信息将使我能够针对不同的系统对软件进行基准测试并找到瓶颈。

通常,我正在寻找的是:

  • 核心和/或处理器数量
  • 32位和64位CPU
  • CPU缓存行大小
  • L1,L2,L3缓存的大小
  • 设置缓存的关联性
  • TLB大小
  • CPU上的确切品牌/型号信息
  • FSB信息
  • RAM数量
  • 交换/虚拟内存量
  • 在其中运行小程序的JVM
  • 运行JVM的操作系统
  • 系统负荷
  • 已使用/未使用的内核线程数
  • 互联网连接带宽
  • 可用内存
  • 使用中的图形卡
  • 如果正在可视化操作系统
  • 网络资源正在使用

这些信息中有没有包含在Java
Applets中的信息。是否有图书馆可以找到这些信息?Applet基准测试工具可以发现/猜测其中的一些内容?您能想到的任何巧妙技巧吗?

它们是否阻塞了计算机硬件的任何方面。也就是说,Java
applet是否可以通过尝试访问某事物来检测它是否正在使用或不可用(可能是特定的TCP端口或图形加速器)。

免责声明:我知道关心硬件违背了不关心硬件的Java意识形态。尽管评论指出这一点可能对其他看到此问题的读者有所帮助,但请注意,此类答案并非我所要的。

编辑

添加了其他信息:

java.lang。
管理
在运行JVM的系统上提供了各种信息。

java.lang.management。
OperatingSystemMXBean
提供:

  1. getAvailableProcessors()等效于Runtime.availableProcessors()的可用处理器数
  2. getSystemLoadAverage()系统上的平均负载,最后一分钟的系统平均负载。

java.lang.management。
管理工厂

  1. getGarbageCollectorMXBeans() 返回GarrbageCollectorMXBeans的列表。可以查询每个 GarbageCollectorMXBean以获取以下信息:

    1. getCollectionCount()使用此bean发生的gc数。
    2. getCollectionTime()近似表示gc之间经过的累计时间(以毫秒为单位)。(注意:Java虚拟机实现可能使用高分辨率计时器来测量经过的时间。)
    3. getName()内存管理器的名称。
    4. getMemoryPoolNames()此gc管理的内存池。
    5. getThreadMXBean() 返回 ThreadMXBean,它提供:

    6. getCurrentThreadCpuTime()返回当前线程的总CPU时间(以纳秒为单位)。如果实现区分用户模式时间和系统模式时间,则返回的CPU时间是当前线程在用户模式或系统模式下执行的时间。

    7. getRuntimeMXBean 返回 RuntimeMXBean
    8. Java虚拟机的getUptime()运行时间(以毫秒为单位)。
    9. getStartTime() Java虚拟机的启动时间(以毫秒为单位)。
    10. getInputArguments()返回传递给Java虚拟机的输入参数,该参数不包含main方法的参数。
    11. getCompilationMXBean 返回 CompilationMXBean
    12. getName() JIT的名称
    13. getTotalCompilationTime()编译代码所花费的时间(以毫秒为单位)。

问题答案:

那些很容易获得的信息是通过System.getProperties(或System.getProperty)方法可访问的信息。

例如,os.name将返回操作系统的名称。在我的系统上,我得到Windows XP了结果。

System.getProperties小程序可以访问的一些可用信息,包括:

  • 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默认情况下导致a
的那些属性,可能必须采取一些步骤来授予applet权限以执行其中的某些信息。(这里是给一个链接安全性限制一节的课:小应用程序从Java教程。)

Runtime类可以提供信息,诸如:

  • Runtime.availableProcessors方法可用于JVM的处理器(或核心或逻辑线程,大概)的数量。
  • Java虚拟机的内存信息,如freeMemorymaxMemorytotalMemory

除了默认值SystemRuntime类提供的信息之外,可能还需要对操作系统进行调用,这将取决于平台。

编辑

Java教程的课程:小程序中的

获取系统属性”页面提供了可以读取的属性列表和小程序无法读取的属性列表。



 类似资料:
  • 对于Windows Vista和Windows 7,请运行: keytool-list-v-keystore“C:\users\your_user_name.androiddebugkey-storepass android-keypass android” 但是我不明白我应该在Windows中的哪里运行这个试验?

  • 问题内容: 一个类文件可以实现几个接口?类文件使用的接口数量是否有限制?提前致谢。 问题答案: 出于所有实际目的,一个类可以实现的接口数量没有限制,但是java不允许您从多个超类继承。 但是,如果您确实想要nitpick,则可以说一个类可以实现的接口数量受接口ID可以以java字节码表示的最大值限制,或者必须由实现这些接口的代码存储量来限制,或者存储字节码的硬盘空间量。这些都是愚蠢的论点。显然,由

  • 在当前版本中,您不仅可以查看AssetBundle文件的包含资源信息和依赖关系信息,同时还可以查看每种资源的详细使用信息。目前,UWA资源检测服务对于主流资源的支持如下: 纹理资源 对于纹理资源,UWA可以提供以下重要信息:分辨率、资源格式、内存占用、Mipmap功能是否开启 和 Read/Write是否开启。这些均为影响纹理文件尺寸和内存占用的重要因素。因此,我们将其在此进行详细展示,您可以对每

  • 在概览页面或警报历史记录页面中点击警报以查看其详细信息页面。在“警报详细信息”页面中,你可以查看引发警报的详细信息,将它标记为已读或未读,开启或关闭它,将它分配给成员,添加备注。当你打开此页面时,警报会自动标记为“已读”。 警报详情页面的信息 摘要 它显示警报的当前状态,以及其引发时间和结束时间。 警报详细信息 会显示警报名、警报的解释,以及 Navicat Monitor 的建议以帮助你调查和解

  • 本文向大家介绍GNU/Linux 文件/目录详细信息,包括了GNU/Linux 文件/目录详细信息的使用技巧和注意事项,需要的朋友参考一下 示例 该ls命令有几个选项,可以一起使用以显示更多信息。 详细信息/权利 该l选项显示文件许可权,大小和最后修改日期。因此,如果根目录包含一个名为dir的目录test和一个文件,someFile则命令为: 将输出类似 权限格式为drwxrwxrwx。d如果不是

  • 问题内容: 每当断言语句成功时,我想让它大吼大叫,或者至少让它显示遇到的成功断言语句的数量。 我正在使用JUnit4。 有什么建议? 问题答案: 如果要为每个成功的断言看到一些输出,另一种不需要外部依赖关系或源代码的简单方法是定义自己的Assert类,该类将所有方法委托给标准JUnit Assert类,并记录成功的断言(失败的断言将照常由JUnit类报告)。 然后,您可以从“ org.junit.