Estoy escribiendo un applet de Java para ejecutar de manera diferente bajo hardware diferente. Por ejemplo, si sé que una computadora tiene una gran cantidad de RAM pero un procesador débil, puedo alterar el equilibrio de algunas compensaciones de tiempo y memoria. Ser capaz de descubrir la marca exacta y el modelo de la CPU en la que se ejecuta el applet podría ser útil. Tener esa información me permitiría comparar mi software con diferentes sistemas y encontrar cuellos de botella.¿Cuántos detalles de hardware puede descubrir un Applet de Java?
Generalmente lo que estoy buscando es:
- Número de conductores y/o procesadores
- 32 bits vs 64 bits CPU
- CPU tamaño de la línea de caché
- Tamaño de L1, L2 , caché L3
- Conjunto asociatividad de caché
- Tamaño de TLB
- tipo exacto/Mo del información sobre la CPU información
- FSB
- cantidad de RAM
- Cantidad de canje/memoria virtual
- La JVM en el que el applet se está ejecutando
- sistema operativo en ejecución JVM
- carga del sistema
- Número de hilos de Kernal utilizados
- Ancho de banda de la conexión a Internet
- Memor y disponibles
- Las tarjetas gráficas en uso
- Si se está visualizando sistema operativo
- recursos de red en uso
¿Es alguna de esta información al horno en los applets de Java. ¿Hay bibliotecas para encontrar esta información? Applet herramientas de evaluación comparativa para descubrir/adivinar algo de eso? ¿Algún truco ingenioso que se te ocurra?
Son sus aspectos del hardware que bloquean. Es decir, ¿podría un applet de Java detectar que algo está en uso o no disponible al intentar acceder y denegarlo (tal vez un puerto TCP particular o un acelerador de gráficos)?
Descargo de responsabilidad: Sé que preocuparse por el hardware va en contra de la ideología de Java de no preocuparse por el hardware. Si bien los comentarios señalan que esto puede ser útil para otros lectores que ven esta pregunta, tenga en cuenta que tales respuestas no son lo que estoy buscando.
EDITAR
agregó información adicional:
java.lang. management proporciona todo tipo de información sobre el sistema en el que se ejecuta la JVM.
java.lang.management.OperatingSystemMXBean proporciona:
- getAvailableProcessors() El número de procesadores disponibles equivalentes Runtime.availableProcessors()
- getSystemLoadAverage() La carga media en el sistema de la media carga del sistema para el último minuto.
java.lang.management. ManagementFactory
getGarbageCollectorMXBeans() devuelve una lista ofGarbageCollectorMXBeans. Cada GarbageCollectorMXBean puede ser consultada para la siguiente información:
- getCollectionCount() número de GC que se han producido utilizando este bean .
- getCollectionTime() tiempo acumulado aproximado transcurrido entre gc's en milisegundos. (Nota: El virtual de implementación Java máquina puede utilizar un temporizador de alta resolución para medir el tiempo transcurrido .)
- getName() el nombre del administrador de memoria.
- getMemoryPoolNames() las agrupaciones de memoria que administra este gc.
getThreadMXBean() devuelve el ThreadMXBean que dispone:
- getCurrentThreadCpuTime() Devuelve el tiempo total de CPU para el subproceso actual en nanosegundos. Si la implementación distingue entre tiempo de modo de usuario y tiempo de modo de sistema, el tiempo de CPU devuelto es la cantidad de tiempo que el subproceso actual se ha ejecutado en el modo de usuario o el modo de sistema.
- getRuntimeMXBean rendimientos RuntimeMXBean
- getUptime() tiempo de funcionamiento de la máquina virtual Java en milisegundos.
- getStartTime() hora de inicio de la máquina virtual Java en milisegundos.
- getInputArguments() Devuelve los argumentos de entrada pasados a la máquina virtual Java que no incluye los argumentos para el método principal.
- getCompilationMXBean devuelve el CompilationMXBean
- getName() el nombre del JIT
- getTotalCompilationTime() tiempo en milisegundos que tomó para compilar el código.
Buena respuesta, no había considerado usar awt para nada. Trucos de memoria caché contra java He estado trabajando en esta área durante los últimos dos años. Tengo curiosidad de por qué estabas haciendo esto? –
Tuve un curso sobre arquitecturas de caché en mi universidad y decidí verificar si esta experiencia puede ser reutilizada en Java. En realidad, Java proporciona más control sobre cómo se colocan los objetos en la memoria: si se asignan en una secuencia, generalmente se asignan uno al lado del otro. Además, los miembros de la matriz primitiva se asignan uno al lado del otro. Estaba jugando con el acceso al elemento de matriz, accediendo a elementos uno al lado del otro o elementos aleatorios que pueden estar lejos el uno del otro. El acceso aleatorio a gran escala no puede ser tan fácilmente admitido por la memoria caché y toma más tiempo. –