Wie viele Hardware-Details kann ein Java-Applet entdecken?
-
06-07-2019 - |
Frage
Ich schreibe ein Java-Applet unter den unterschiedlichen Hardware laufen. Zum Beispiel, wenn ich weiß, ein Computer eine große Menge an RAM, aber einen schwachen Prozessor, kann ich das Gleichgewicht einiger Zeit Gedächtnis Kompromisse verändern. Die Möglichkeit, die genaue Marke und das Modell der CPU zu entdecken, auf das das Applet könnte hilfreich sein, ausgeführt wird. solche Informationen Mit mir erlauben würde, meine Software gegen verschiedene Systeme zum Benchmark und finden Engpässe.
Im Allgemeinen, was ich suche ist:
- Die Anzahl der Kerne und / oder Prozessoren
- 32 Bit vs 64-Bit-CPU
- CPU-Cache-Zeilengröße
- Größe von L1, L2, L3-Cache
- Stellen Sie Assoziativität von Cache
- Größe des TLB
- Exact Marke / Modell Informationen über die CPU
- FSB Informationen
- Anzahl der RAM
- Anzahl der Swap / virtuellen Speicher
- Die JVM, in dem das Applet ausgeführt wird
- Betriebssystem läuft JVM
- Systemlast
- Die Anzahl der verwendeten / ungebrauchten Kernal Fäden
- Bandbreite der Internet-Verbindung
- Speicher verfügbar
- Grafikkarten im Einsatz
- Wenn Betriebssystem wird sichtbar gemacht
- Netzwerk-Ressource in Gebrauch
Ist eine dieser Informationen gebacken in Java-Applets. Gibt es Bibliotheken für ein diese Informationen zu finden? Applet Benchmarking-Tools zu entdecken / erraten, einige davon? Irgendwelche clevere Tricks, die Sie an denken können?
Gibt es irgendwelche Aspekte von Computer-Hardware, die blockiert werden. Das heißt, dass ein Java-Applet erkennt, dass etwas in Gebrauch oder nicht verfügbar ist, indem Sie versuchen, darauf zuzugreifen und (vielleicht einen Beschleuniger bestimmten TCP-Port oder Grafik) verweigert wird.
Disclaimer: Ich weiß, dass über die Hardware kümmern sich gegen die Java-Ideologie nicht über die Hardware kümmern. Während Kommentare dieses heraus für andere Leser hilfreich sein kann, die diese Frage zu sehen, bitte beachten Sie, dass solche Antworten sind nicht das, was ich suche.
Bearbeiten
Es wurden zusätzliche Informationen:
java.lang. getAvailableProcessors () Die Anzahl der verfügbaren Prozessoren äquivalent getSystemLoadAverage () die durchschnittliche Auslastung des Systems die Systemlast Durchschnitt der letzten Minute.
java.lang.management. ManagementFactory getGarbageCollectorMXBeans () gibt eine Liste ofGarbageCollectorMXBeans. Jedes GarbageCollectorMXBean können abgefragt werden die folgenden Informationen: getThreadMXBean () gibt die ThreadMXBean bestimmt:
Lösung
Diejenigen, die ganz einfach zu erhalten sind die Informationen zugänglich über die System.getProperties
(oder System.getProperty
) -Methode.
Zum Beispiel os.name
wird wieder den Namen des Betriebssystems. Auf meinem System habe ich die Windows XP
als das Ergebnis.
Einige Informationen von System.getProperties
, die durch das Applet zugänglich zu sein scheint ist:
-
java.vm.version
-. Version der JVM -
java.vm.vendor
- Verkäufernamen der JVM .
-
java.vm.name
- Name des JVM .
-
os.name
- Name des Betriebssystems. (ZWindows XP
) -
os.arch
- Architektur des Systems. (Zx86
) -
os.version
- Version des Betriebssystems. (Z5.1
) -
java.specification.version
-. JRE-Spezifikation Version
Die oben ist nicht eine umfassende Liste, aber es kann einige Ideen geben, was das System ist wie.
Es ist zu beachten, dass nicht alle Eigenschaften, die durch die System.getProperties
verfügbar sind, können gelesen werden, da für einige Eigenschaften, wird der Sicherheits-Manager eine AccessControlException
verursachen. Als ich versuchte, die java.home
Eigenschaft zu lesen, eine Ausnahme ausgelöst wurde.
Um diese Eigenschaften zu erhalten, die ein AccessControlException
standardmäßig führt, würde man wahrscheinlich genommen werden müßte Schritte Berechtigungen für das Applet zu geben, einige dieser Informationen auszuführen. (Hier ist ein Link auf die Sicherheitsbeschränkungen Abschnitt der Lektion: Applets von Die Java-Tutorials .)
Die Runtime
Klasse kann Informationen wie:
- Die Anzahl der Prozessoren (oder Kerne, oder logische Verknüpfungen, vermutlich) zur Verfügung, die JVM durch die
Runtime.availableProcessors
Methode. - Java virtuelle Speicher Informationen der Maschine, wie
freeMemory
,maxMemory
undtotalMemory
.
Neben den Informationen der Standard System
und Runtime
Klassen wahrscheinlich erfordern würde, sofern Anrufe an das Betriebssystem zu machen, die plattformabhängig sein würden.
Bearbeiten
Die Erste Systemeigenschaften Seite von < a href = "http://java.sun.com/docs/books/tutorial/deployment/applet/index.html" rel = "nofollow noreferrer"> Lektion: Applets von
Andere Tipps
Hier sind einige weitere:
java.awt.Toolkit in der Lage sein, der Bildschirmauflösung zu sagen, und vielleicht noch etwas über die Grafikkarte (aus dem verwendeten Farbmodell).
Sie können auch etwas größere Array von Bytes zuzuordnen und Zugriffszeiten messen ungefähre Informationen über den Cache zu bekommen (in der Vergangenheit haben wir mit dieser gespielt zu überprüfen, ob Cache-Speicher Tricks mit Java überhaupt arbeiten, sie tun). Allerdings sind diese Tests können Ihr Applet für einige Zeit hängen, so dass Sie den Benutzer informieren müssen, dass Ihre tun.
Applets, die Modellierung tun können, um das Verhältnis von übergaben virtuelle Zeit über die bestandene Echtzeit zu messen. Nach einem langsamen System zu erfassen, kann das Applet Integrationsschritt und ähnliche Konstanten erhöhen erfordert weniger CPU-Zeit, auch mit den Kosten der weniger perfekt ausgegeben. hier gibt es ein Beispiel für eine solche Selbsteinstellung Code, der die Schrittgeschwindigkeit in der Simulation des Vogels Herde Verhalten einstellt.
Mit getNetworkInterfaces Sie Netzwerkschnittstellen in Ihrem System aufzählen können:
http://www.browserleaks.com/java
Es kann eine bedeutende Informationen zeigen, wie Netzwerkadapter Namen und Verbindungsnamen.