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

  1. getGarbageCollectorMXBeans () gibt eine Liste ofGarbageCollectorMXBeans. Jedes GarbageCollectorMXBean können abgefragt werden die folgenden Informationen:

    1. getCollectionCount () Anzahl von gc, die aufgetreten sindmit diesem Bohne.
    2. getCollectionTime () approximate akkumulierte Zeit verstrichen zwischen GCs in Millisekunden. (Hinweis: Die Java Virtual Machine Implementierung kann eine hohe verwenden Auflösung Timer zur Messung der verstrichene Zeit).
    3. getName () den Name der Speicher-Manager.
    4. getMemoryPoolNames () die Speicherpools, dass diese gc verwaltet.
  2. getThreadMXBean () gibt die ThreadMXBean bestimmt:

    1. getCurrentThreadCpuTime () Gibt die Gesamtrechenzeit für den aktuellen Thread in Nanosekunden. Wenn die Umsetzung zwischen Anwendermodus und Systemzeitmodus Zeit unterscheidet, ist der zurück CPU-Zeit die Zeitdauer, die der aktuelle Thread im Benutzermodus oder Systemmodus ausgeführt hat.
  3. getRuntimeMXBean liefert RuntimeMXBean
    1. getUptime () Verfügbarkeit der virtuellen Java-Maschine in Millisekunden.
    2. getStartTime () Zeit der virtuellen Java-Maschine in Millisekunden starten.
    3. getInputArguments () Gibt die Argumente Eingabe in die virtuelle Java-Maschine übergeben, die nicht die Argumente an die Hauptmethode enthält.
  4. getCompilationMXBean gibt die CompilationMXBean
    1. getName () den Namen des JIT
    2. getTotalCompilationTime () Zeit in Millisekunden dauerte es Ihren Code zu kompilieren.
War es hilfreich?

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. (Z Windows XP)
  • os.arch - Architektur des Systems. (Z x86)
  • os.version - Version des Betriebssystems. (Z 5.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:

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top