Java Laufzeit Get Timeime Waitforexit


Dieser TechTip wurde mit Erlaubnis von java. sun nachgedruckt Vor JDK 5.0 war die einzige Möglichkeit, einen Prozess abzufragen und lokal auf die Benutzer-Laufzeit auszuführen, die exec () - Methode der java. lang. Runtime-Klasse zu verwenden. JDK 5.0 fügt eine neue Methode hinzu, einen Befehl in einem separaten Prozess durch eine Klasse namens ProcessBuilder auszuführen. ProcessBuilder finden Sie im java. lang-Paket (wie Runtime und Process). Dieser Tipp diskutiert und vergleicht beide Ansätze. Wenn Sie mit der Runtime-Klasse vertraut sind, wissen Sie, dass es Ihnen auch erlaubt, Speicherverbrauch zu entdecken und einen Shutdown-Hook hinzuzufügen. Aber wahrscheinlich die beliebteste Verwendung der Klasse vor 5.0 war, einen Befehl in einem separaten Prozess auszuführen. Dies geschah durch eine der sechs Versionen der exec () - Methode von Runtime: Bevor Sie die exec () - Methode aufrufen, geben Sie den Befehl und seine Argumente, die Umgebungsvariableneinstellungen und das Arbeitsverzeichnis an. Alle Versionen der Methode geben ein java. lang. Process-Objekt zur Verwaltung des erstellten Prozesses zurück. Dadurch können Sie den Input - oder Output-Stream des Subprozesses und den Exit-Status (ua verfügbare Informationen) abrufen. Hier ein Beispiel, DoRuntime, das zeigt, wie ein Befehl mit der ursprünglichen Runtime-Klasse ausgeführt wird. Der Befehl zum Ausführen wird von der Befehlszeile übergeben. Wenn Sie DoRuntime in Solaris wie folgt ausführen: Sie erhalten eine Ausgabe, die so aussieht (was vom Inhalt des Verzeichnisses abhängt): Linux-Benutzer konnten auch ls als den Befehl übergeben, um eine Verzeichnisliste zu erhalten. Auf einer Microsoft Windows-Plattform sind Befehle wie dir im Befehlsprozessor intern, so dass das einzelne Befehlszeilenargument die zitierte Zeichenfolge: cmd c dir ist (wieder hängt die Ausgabe vom Inhalt des Verzeichnisses ab). Als codiert, führt der Befehl im aktuellen Arbeitsverzeichnis mit seinen Umgebungsvariablen intakt aus. Wenn Sie den Befehl in einem anderen Verzeichnis ausführen möchten und dem exec () - Befehl weitere Argumente hinzufügen müssen, ändern Sie: Der zweite Parameter im Aufruf der exec () - Methode identifiziert die Umgebungsvariableneinstellungen. Da der Parameter null ist, erbt der Unterprozeß die Umgebungseinstellungen des aktuellen Prozesses. Also, was ist falsch mit diesem Ansatz Warum erstellen Sie einen neuen Ansatz Das Problem ist, dass die Runtime. exec Ansatz nicht unbedingt machen es einfach zu anpassen und Aufrufen von Unterprozessen. Die neue ProcessBuilder-Klasse vereinfacht die Dinge. Durch verschiedene Methoden in der Klasse können Sie die Umgebungsvariablen für einen Prozess einfach ändern und den Prozess starten. Heres eine einfache Verwendung von ProcessBuilder, die die Funktionen des DoRuntime Beispiel dupliziert: Beachten Sie, dass die folgenden zwei Zeilen in DoRuntime: in die folgende Zeile in DoProcessBuilder geändert wurden: Die ProcessBuilder-Klasse verfügt über zwei Konstruktoren. Ein Konstruktor akzeptiert eine Liste für den Befehl und seine Argumente. Der andere Konstruktor akzeptiert eine variable Anzahl von String-Argumenten. Mit ProcessBuilder rufen Sie start () auf, um den Befehl auszuführen. Vor dem Aufruf von start () können Sie manipulieren, wie der Prozess erstellt wird. Wenn Sie möchten, dass der Prozess in einem anderen Verzeichnis gestartet wird, übergeben Sie eine Datei nicht als Befehlszeilenargument. Stattdessen setzen Sie das Arbeitsverzeichnis des Prozesses, indem Sie die Datei an die Directory () - Methode übergeben: Es gibt keine offensichtliche Setter-Typmethode in ProcessBuilder zum Festlegen von Umgebungsvariablen. Stattdessen erhalten Sie eine Map der Variablen über die environment () - Methode, dann manipulieren Sie die Map: Die Optionen zum Manipulieren der Umgebung beinhalten das Hinzufügen von Umgebungsvariablen mit der put () - Methode und das Entfernen mit der remove () - Methode. Beispiel: Nachdem die Umgebungsvariablen und das Verzeichnis gesetzt sind, rufen Sie start () auf: Sie können auch alle Variablen aus der Umgebung löschen () und explizit die gewünschten Werte festlegen. Mit Methoden wie z. B. Umgebung () zum Hinzufügen und Entfernen von Umgebungsvariablen aus dem Prozessraum und start () zum Starten eines neuen Prozesses sollte ProcessBuilder es leichter machen, einen Teilprozess mit einer modifizierten Prozessumgebung aufzurufen. Sie können den ersten Satz von Umgebungsvariablen erhalten, indem Sie die Methode getenv () von System aufrufen. Verstehen Sie, dass nicht alle Plattformen unterschiedliche Umgebungsvariablen unterstützen. Wenn Sie versuchen, eine Umgebungsvariable auf einer Plattform zu ändern, die es verbietet, wird der Vorgang entweder eine UnsupportedOperationException oder eine IllegalArgumentException auslösen. Auch, wenn mit einem Sicherheits-Manager, youll benötigen Sie die RuntimePermission für getenv, sonst wird eine SecurityException geworfen werden. Vergessen Sie nicht, den start () - Aufruf nach dem Konfigurieren der Instanz nicht zu vergessen. Und behalten Sie weiterhin die Process-Klasse, um die Streams für den Prozess zu manipulieren und den Exit-Status zu erhalten. Ein Wort der Vorsicht über die Beispiele in diesem Tipp. Es ist möglich, dass die Beispiele Deadlock, wenn der Teilprozess genügend Ausgabe erzeugt, um das System zu überlaufen. Eine robustere Lösung erfordert das Entleeren des Prozesses stdout und stderr in separaten Fäden. Weitere Informationen zu ProcessBuilder finden Sie in der Klassendefinition. Copyright (c) 2004-2005 Sun Microsystems, Inc. Alle Rechte vorbehalten. Method Detail getRuntime Gibt das Laufzeitobjekt zurück, das mit der aktuellen Java-Anwendung verknüpft ist. Die meisten Methoden der Klasse Runtime sind Instanzmethoden und müssen in Bezug auf das aktuelle Laufzeitobjekt aufgerufen werden. Rückgabewert: das Runtime-Objekt, das der aktuellen Java-Anwendung zugeordnet ist. Beendet die derzeit laufende Java Virtual Machine, indem sie ihre Shutdown-Sequenz einleitet. Diese Methode kehrt nie normal zurück. Das Argument dient der Konvention als Statuscode, ein Nicht-Null-Statuscode zeigt eine abnormale Beendigung an. Die Abschaltfolge der virtuellen Maschinen besteht aus zwei Phasen. In der ersten Phase alle registrierten Abschalthaken. Wenn überhaupt, in irgendeiner nicht spezifizierten Reihenfolge gestartet werden und gleichzeitig ausgeführt werden, bis sie fertig sind. In der zweiten Phase werden alle unbemannten Finalizer ausgeführt, wenn Finalization-on-Exit aktiviert wurde. Sobald dies erfolgt ist, hält die virtuelle Maschine an. Wenn diese Methode aufgerufen wird, nachdem die virtuelle Maschine ihre Shutdown-Sequenz begonnen hat, wird diese Methode dann unbegrenzt blockiert, wenn Shutdown-Hooks ausgeführt werden. Wenn Shutdown-Hooks bereits ausgeführt wurden und die On-End-Finalisierung aktiviert wurde, stoppt diese Methode die virtuelle Maschine mit dem gegebenen Statuscode, wenn der Status ansonsten ungleich Null ist, blockiert er unbegrenzt. Die Methode System. exit ist die herkömmliche und bequeme Methode, diese Methode aufzurufen. AddShutdownHook Registriert einen neuen Virtual-Machine-Shutdown-Hook. Die Java-Virtual Machine wird als Reaktion auf zwei Arten von Ereignissen heruntergefahren: Das Programm beendet das Programm normal, wenn das letzte Nicht-Dämon-Thread beendet wird oder wenn die Exit-Methode (gleichwertig, System. exit) aufgerufen wird oder die virtuelle Maschine als Antwort beendet wird Zu einem Benutzer-Interrupt, wie z. B. Eingabe C. Oder ein systemweites Ereignis wie Benutzerabmeldung oder Systemabschaltung. Ein Shutdown-Hook ist einfach ein initialisiertes, aber unstarted Thread. Wenn die virtuelle Maschine ihre Shutdown-Sequenz beginnt, startet sie alle registrierten Shutdown-Hooks in einer nicht spezifizierten Reihenfolge und läßt sie gleichzeitig laufen. Wenn alle Hooks beendet sind, werden alle uninvoked Finalizer ausgeführt, wenn Finalization-on-Exit aktiviert wurde. Schließlich wird die virtuelle Maschine stoppen. Beachten Sie, dass Daemon-Threads weiterhin während der Shutdown-Sequenz ausgeführt werden, ebenso wie nicht-Daemon-Threads, wenn das Herunterfahren durch den Aufruf der Exit-Methode initiiert wurde. Sobald die Shutdown-Sequenz begonnen hat, kann sie nur gestoppt werden, indem die halt-Methode aufgerufen wird, die die virtuelle Maschine zwangsweise beendet. Sobald die Herunterfahrsequenz begonnen hat, ist es unmöglich, einen neuen Abschalthaken zu registrieren oder einen vorher registrierten Haken zu registrieren. Wenn Sie versuchen, eine dieser Operationen auszuführen, wird eine IllegalStateException ausgelöst. Shutdown-Hooks laufen zu einem empfindlichen Zeitpunkt im Lebenszyklus einer virtuellen Maschine und sollten daher defensiv codiert werden. Sie sollten insbesondere fadensicher geschrieben und so weit wie möglich Verriegelungen verhindert werden. Sie sollten sich auch nicht blind auf Dienstleistungen verlassen, die ihre eigenen Abschalthaken registriert haben könnten und sich daher selbst im Prozess des Abschaltens befinden können. Versuche, andere Thread-basierte Dienste wie zum Beispiel den AWT-Event-Dispatch-Thread zu verwenden, können zu Deadlocks führen. Shutdown-Haken sollten auch ihre Arbeit schnell beenden. Wenn ein Programm den Exit aufruft, ist die Erwartung, dass die virtuelle Maschine sofort heruntergefahren und beendet wird. Wenn die virtuelle Maschine aufgrund von Benutzerabmeldung oder Systemabschaltung beendet wird, kann das zugrundeliegende Betriebssystem nur eine feste Zeitdauer zulassen, in der es heruntergefahren und beendet wird. Es ist daher nicht ratsam, jede Benutzerinteraktion zu versuchen oder eine langwierige Berechnung in einem Shutdown-Hook durchzuführen. Ausgeführte Ausnahmen werden in Shutdown-Hooks ebenso behandelt wie in jedem anderen Thread, indem die Methode uncaughtException des ThreadGroup-Objekts aufgerufen wird. Die Standardimplementierung dieser Methode druckt den Ausnahmestapel-Trace auf System. err und beendet den Thread, den er nicht veranlasst, dass die virtuelle Maschine beendet oder angehalten wird. In seltenen Fällen kann die virtuelle Maschine abgebrochen werden. Das heißt, aufhören, ohne sauber herunterzufahren. Dies geschieht, wenn die virtuelle Maschine extern beendet wird, zum Beispiel mit dem SIGKILL-Signal auf Unix oder dem TerminateProcess-Aufruf unter Microsoft Windows. Die virtuelle Maschine kann auch abbrechen, wenn eine native Methode schief geht, z. B. beschädigt interne Datenstrukturen oder versuchen, auf nicht vorhandenen Speicher zuzugreifen. Wenn die virtuelle Maschine abbricht, kann keine Garantie dafür getroffen werden, ob irgendwelche Abschalthaken ausgeführt werden oder nicht. Parameter: hook - Ein initialisiertes, aber nicht gestartetes Threadobjekt Throws: IllegalArgumentException - Wenn der angegebene Hook bereits registriert wurde oder wenn festgestellt werden kann, dass der Hook bereits ausgeführt oder bereits ausgeführt wurde, ist IllegalStateException - Wenn sich die virtuelle Maschine bereits im Verzeichnis befindet Vorgang des Herunterfahrens SecurityException - Wenn ein Sicherheitsmanager vorhanden ist und er RuntimePermission (shutdownHooks) verweigert Seit: 1.3 Siehe auch: removeShutdownHook (java. lang. Thread). Halt (int). Exit (int) removeShutdownHook Deinstalliert einen zuvor angemeldeten Virtual-Machine-Shutdown-Hook. Parameter: hook - der zu entfernende Hook Rückgabewert: true, wenn der angegebene Hook zuvor registriert und erfolgreich de-registriert wurde, andernfalls false. Throws: IllegalStateException - Wenn die virtuelle Maschine bereits in der Abschaltung von SecurityException ist - Wenn ein Sicherheitsmanager vorhanden ist und er RuntimePermission (shutdownHooks) verweigert Seit: 1.3 Siehe auch: addShutdownHook (java. lang. Thread). Exit (int) Forcibly beendet die derzeit laufende Java Virtual Machine. Diese Methode kehrt nie normal zurück. Diese Methode sollte mit äußerster Vorsicht eingesetzt werden. Anders als die Exit-Methode führt diese Methode nicht dazu, dass Shutdown-Hooks gestartet werden und keine uninvocierten Finalizer ausgeführt werden, wenn Finalization-on-Exit aktiviert wurde. Wenn die Shutdown-Sequenz bereits eingeleitet wurde, wartet diese Methode nicht darauf, dass alle aktiven Shutdown-Hooks oder - Finalizer ihre Arbeit beenden. Parameter: status - Beendigungsstatus. Konventionellerweise bedeutet ein Nicht-Null-Statuscode eine abnormale Beendigung. Wenn die Exit-Methode (äquivalent, System. exit) bereits aufgerufen wurde, wird dieser Statuscode den an diese Methode übergebenen Statuscode überschreiben. Throws: SecurityException - Wenn ein Sicherheitsmanager vorhanden ist und seine checkExit-Methode einen Exit mit dem angegebenen Status nicht zulässt Seit: 1.3 Siehe auch: exit (int). AddShutdownHook (java. lang. Thread). RemoveShutdownHook (java. lang. Thread) runFinalizersOnExit Veraltet. Diese Methode ist inhärent unsicher. Dies kann dazu führen, dass Finalizer auf Live-Objekten aufgerufen werden, während andere Threads diese Objekte gleichzeitig manipulieren, was zu fehlerhaftem Verhalten oder Deadlock führt. Aktivieren oder Deaktivieren der Finalisierung bei der Exit-Aktion bedeutet, dass die Finalizer aller Objekte, die Finalizer haben, die noch nicht automatisch aufgerufen wurden, ausgeführt werden sollen, bevor die Java-Laufzeit beendet wird. Standardmäßig ist die Finalisierung beim Beenden deaktiviert. Wenn es einen Sicherheitsmanager gibt, wird seine checkExit-Methode zuerst mit 0 als Argument aufgerufen, um sicherzustellen, dass der Exit erlaubt ist. Dies könnte zu einer SecurityException führen. Parameter: value - true, um die Finalisierung beim exit zu aktivieren, false to disable Throws: SecurityException - wenn ein Sicherheitsmanager existiert und seine checkExit - Methode das Exit nicht zulässt. Seit: JDK1.1 Siehe auch: exit (int). Gc (). SecurityManager. checkExit (int) Führt den angegebenen Stringbefehl in einem separaten Prozess aus. Dies ist eine bequeme Methode. Ein Aufruf des Formulars exec (Befehl) verhält sich genauso wie der Aufruf exec (command, null, null). Parameter: command - ein angegebener Systembefehl. Rückgabewert: Ein neues Prozessobjekt für die Verwaltung des Teilprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager existiert und seine checkExec-Methode die Erstellung des Subprozesses IOException nicht zulässt - Wenn ein IO-Fehler auftritt NULLPOinterException - Wenn Befehl null ist IllegalArgumentException - Wenn Befehl leer ist Siehe auch : Exec (String, String, Datei). ProcessBuilder Führt den angegebenen Stringbefehl in einem separaten Prozess mit der angegebenen Umgebung aus. Dies ist eine bequeme Methode. Ein Aufruf der Form exec (command, envp) verhält sich genauso wie der Aufruf exec (command, envp, null). Parameter: command - ein angegebener Systembefehl. Envp - Array von Strings, wobei jedes Element die Umgebungsvariableneinstellungen im Formatnamenwert hat. Oder null, wenn der Teilprozess die Umgebung des aktuellen Prozesses erben sollte. Rückgabewerte: Ein neues Prozessobjekt für die Verwaltung des Unterprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager existiert und seine checkExec-Methode die Erstellung des Subprozesses nicht zulässt IOException - Wenn ein IO-Fehler auftritt NullPointerException - Wenn der Befehl null ist. Oder eines der Elemente von envp ist null IllegalArgumentException - Wenn Befehl leer ist Siehe auch: exec (String, String, File). ProcessBuilder Führt den angegebenen Stringbefehl in einem separaten Prozess mit der angegebenen Umgebung und dem Arbeitsverzeichnis aus. Dies ist eine bequeme Methode. Ein Aufruf der Form exec (command, envp, dir) verhält sich genauso wie der Aufruf exec (cmdarray, envp, dir). Wobei cmdarray ein Array aller Token im Befehl ist. Genauer gesagt, wird die Befehlszeichenfolge in Token unterteilt, indem ein StringTokenizer verwendet wird, der durch den Aufruf des neuen StringTokenizer (Befehls) ohne weitere Modifikation der Zeichenkategorien erzeugt wird. Die vom Tokenizer erzeugten Token werden dann in das neue String-Array cmdarray gesetzt. in der gleichen Reihenfolge. Parameter: command - ein angegebener Systembefehl. Envp - Array von Strings, wobei jedes Element die Umgebungsvariableneinstellungen im Formatnamenwert hat. Oder null, wenn der Teilprozess die Umgebung des aktuellen Prozesses erben sollte. Dir - das Arbeitsverzeichnis des Unterprozesses oder null, wenn der Subprozeß das Arbeitsverzeichnis des aktuellen Prozesses übernehmen soll. Rückgabewerte: Ein neues Prozessobjekt für die Verwaltung des Unterprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager existiert und seine checkExec-Methode die Erstellung des Subprozesses nicht zulässt IOException - Wenn ein IO-Fehler auftritt NullPointerException - Wenn der Befehl null ist. Oder eines der Elemente von envp ist null IllegalArgumentException - Wenn Befehl leer ist Da: 1.3 Siehe auch: ProcessBuilder Führt den angegebenen Befehl und die Argumente in einem separaten Prozess aus. Dies ist eine bequeme Methode. Ein Aufruf der Form exec (cmdarray) verhält sich genauso wie der Aufruf exec (cmdarray, null, null). Parameter: cmdarray - array mit dem Aufruf und seinen Argumenten. Rückgabewert: Ein neues Prozessobjekt für die Verwaltung des Unterprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager vorhanden ist und seine checkExec-Methode die Erstellung des Subprozesses IOException nicht zulässt - Wenn ein IO-Fehler auftritt NullPointerException - Wenn cmdarray null ist. Oder eines der Elemente von cmdarray ist null IndexOutOfBoundsException - Wenn cmdarray ein leeres Array ist (hat Länge 0) Siehe auch: ProcessBuilder Führt den angegebenen Befehl und die angegebenen Argumente in einem separaten Prozess mit der angegebenen Umgebung aus. Dies ist eine bequeme Methode. Ein Aufruf der Form exec (cmdarray, envp) verhält sich genauso wie der Aufruf exec (cmdarray, envp, null). Parameter: cmdarray - array mit dem Aufruf und seinen Argumenten. Envp - Array von Strings, wobei jedes Element die Umgebungsvariableneinstellungen im Formatnamenwert hat. Oder null, wenn der Teilprozess die Umgebung des aktuellen Prozesses erben sollte. Rückgabewert: Ein neues Prozessobjekt für die Verwaltung des Unterprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager vorhanden ist und seine checkExec-Methode die Erstellung des Subprozesses IOException nicht zulässt - Wenn ein IO-Fehler auftritt NullPointerException - Wenn cmdarray null ist. Oder eines der Elemente von cmdarray ist null. Oder eines der Elemente von envp ist null IndexOutOfBoundsException - Wenn cmdarray ein leeres Array ist (hat Länge 0) Siehe auch: ProcessBuilder Führt den angegebenen Befehl und die angegebenen Argumente in einem separaten Prozess mit der angegebenen Umgebung und dem Arbeitsverzeichnis aus. Angesichts einer Reihe von Zeichenfolgen cmdarray. Die die Token einer Befehlszeile darstellen, und ein Array von Strings envp. Die die Umgebungsvariableneinstellungen repräsentieren, erstellt diese Methode einen neuen Prozess, in dem der angegebene Befehl ausgeführt wird. Diese Methode überprüft, ob cmdarray ein gültiger Betriebssystembefehl ist. Welche Befehle gültig sind, ist systemabhängig, aber zumindest muss der Befehl eine nicht leere Liste von Nicht-Null-Zeichenfolgen sein. Wenn envp null ist. Der Unterprozess erbt die Umgebungseinstellungen des aktuellen Prozesses. Eine minimale Menge von systemabhängigen Umgebungsvariablen kann erforderlich sein, um einen Prozess auf einigen Betriebssystemen zu starten. Infolgedessen kann der Unterprozess zusätzliche Umgebungsvariableneinstellungen über die in der angegebenen Umgebung hinaus erben. ProcessBuilder. start () ist jetzt der bevorzugte Weg, um einen Prozess mit einer modifizierten Umgebung zu starten. Das Arbeitsverzeichnis des neuen Teilprozesses wird durch dir angegeben. Wenn dir null ist. Der Unterprozess erbt das aktuelle Arbeitsverzeichnis des aktuellen Prozesses. Wenn ein Sicherheitsmanager vorhanden ist, wird seine checkExec-Methode mit der ersten Komponente des Arrays cmdarray als Argument aufgerufen. Dies kann dazu führen, dass eine SecurityException ausgelöst wird. Das Starten eines Betriebssystemprozesses ist sehr systemabhängig. Unter den vielen Dingen, die schief gehen können, sind: Die Programmdatei des Betriebssystems wurde nicht gefunden. Der Zugriff auf die Programmdatei wurde verweigert. Das Arbeitsverzeichnis existiert nicht. In solchen Fällen wird eine Ausnahme ausgelöst. Die genaue Art der Exception ist systemabhängig, wird aber immer eine Subklasse der IOException sein. Parameter: cmdarray - array mit dem Aufruf und seinen Argumenten. Envp - Array von Strings, wobei jedes Element die Umgebungsvariableneinstellungen im Formatnamenwert hat. Oder null, wenn der Teilprozess die Umgebung des aktuellen Prozesses erben sollte. Dir - das Arbeitsverzeichnis des Unterprozesses oder null, wenn der Subprozeß das Arbeitsverzeichnis des aktuellen Prozesses übernehmen soll. Rückgabewert: Ein neues Prozessobjekt für die Verwaltung des Unterprozesses Throws: SecurityException - Wenn ein Sicherheitsmanager vorhanden ist und seine checkExec-Methode die Erstellung des Subprozesses IOException nicht zulässt - Wenn ein IO-Fehler auftritt NullPointerException - Wenn cmdarray null ist. Oder eines der Elemente von cmdarray ist null. Oder eines der Elemente von envp ist null IndexOutOfBoundsException - Wenn cmdarray ein leeres Array ist (hat Länge 0) Seit: 1.3 Siehe auch: ProcessBuilder availableProcessors Gibt die Anzahl der Prozessoren zurück, die für die Java Virtual Machine verfügbar sind. Dieser Wert kann sich während eines bestimmten Aufrufs der virtuellen Maschine ändern. Anwendungen, die empfindlich auf die Anzahl verfügbarer Prozessoren reagieren, sollten daher gelegentlich diese Eigenschaft abfragen und ihre Ressourcennutzung entsprechend anpassen. Rückgabewerte: die maximale Anzahl von Prozessoren, die der virtuellen Maschine zur Verfügung stehen, niemals kleiner als: 1.4 freeMemory Gibt den freien Speicherplatz in der Java Virtual Machine zurück. Der Aufruf der gc-Methode kann dazu führen, dass der von freeMemory zurückgegebene Wert erhöht wird. Rückgabewert: eine Annäherung an die Gesamtspeichermenge, die derzeit für zugewiesene Objekte verfügbar ist, gemessen in Byte. TotalMemory Gibt die Gesamtsumme des Speichers in der Java Virtual Machine zurück. Der von dieser Methode zurückgegebene Wert kann je nach Hostumgebung über die Zeit variieren. Beachten Sie, dass die Menge an Speicher, die erforderlich ist, um ein Objekt eines beliebigen Typs zu halten, implementierungsabhängig sein kann. Rückgabewerte: die Gesamtspeichermenge, die derzeit für aktuelle und zukünftige Objekte verfügbar ist, gemessen in Bytes. Gibt den maximalen Speicherplatz zurück, den der Java Virtual Machine verwenden wird. Wenn kein inhärentes Limit vorhanden ist, wird der Wert Long. MAXVALUE zurückgegeben. Rückgabewerte: die maximale Größe des Speichers, die die virtuelle Maschine verwenden wird, gemessen in Bytes Seit: 1.4 Führt den Garbage Collector aus. Das Aufrufen dieser Methode schlägt vor, dass die virtuelle Java-Maschine Anstrengungen zur Wiederverwendung von unbenutzten Objekten aufwendet, um den Speicher, den sie derzeit besetzen, zur schnellen Wiederverwendung verfügbar zu machen. Wenn das Steuerelement aus dem Methodenaufruf zurückkehrt, hat die virtuelle Maschine sich bemüht, alle verworfenen Objekte zu recyceln. Der Name gc steht für Garbage Collector. Die virtuelle Maschine führt diesen Recyclingvorgang automatisch nach Bedarf in einem separaten Thread durch, auch wenn die gc-Methode nicht explizit aufgerufen wird. Die Methode System. gc () ist die herkömmliche und bequeme Methode, diese Methode aufzurufen. RunFinalization Führt die Finalisierungsmethoden für alle Objekte aus, die noch nicht abgeschlossen sind. Das Aufrufen dieser Methode schlägt vor, dass die virtuelle Java-Maschine Anstrengungen zur Ausführung der Finalisierungsmethoden von Objekten aufwendet, von denen herausgefunden wurde, dass sie verworfen werden, aber deren Finalisierungsmethoden noch nicht ausgeführt wurden. Wenn die Steuerung vom Methodenaufruf zurückgibt, hat die virtuelle Maschine die besten Anstrengungen unternommen, um alle ausstehenden Finalisierungen abzuschließen. Die virtuelle Maschine führt den Finalisierungsprozess automatisch nach Bedarf in einem separaten Thread durch, wenn die Methode runFinalization nicht explizit aufgerufen wird. Die Methode System. runFinalization () ist die herkömmliche und bequeme Methode, diese Methode aufzurufen. TraceInstructions EnablesDisables Verfolgen von Befehlen. Wenn das boolesche Argument true ist. Schlägt diese Methode vor, dass die virtuelle Java-Maschine Debugging-Informationen für jeden Befehl in der virtuellen Maschine emittiert, während sie ausgeführt wird. Das Format dieser Informationen und die Datei oder ein anderer Ausgabestream, auf den sie gesendet wird, hängt von der Hostumgebung ab. Die virtuelle Maschine kann diese Anforderung ignorieren, wenn sie diese Funktion nicht unterstützt. Das Ziel der Trace-Ausgabe ist systemabhängig. Wenn das boolesche Argument falsch ist. Bewirkt diese Methode, dass die virtuelle Maschine die ausführliche Anweisungsverfolgung, die sie ausführt, beendet. Parameter: on - true, um die Befehlsverfolgung false zu aktivieren, um diese Funktion zu deaktivieren. TraceMethodCalls EnablesDisables Tracing von Methodenaufrufen. Wenn das boolesche Argument true ist. Schlägt diese Methode vor, dass die Java-Virtual Machine Debugging-Informationen für jede Methode in der virtuellen Maschine, wie es aufgerufen wird, emittieren. Das Format dieser Informationen und die Datei oder ein anderer Ausgabestream, auf den sie gesendet wird, hängt von der Hostumgebung ab. Die virtuelle Maschine kann diese Anforderung ignorieren, wenn sie diese Funktion nicht unterstützt. Wenn Sie diese Methode mit Argument false aufrufen, wird davon ausgegangen, dass die virtuelle Maschine aufhört, Debugging-Informationen per Anruf zu senden. Parameter: on - true, um die Befehlsverfolgung false zu aktivieren, um diese Funktion zu deaktivieren. Lädt den angegebenen Dateinamen als dynamische Bibliothek. Das Argument Dateiname muss ein vollständiger Pfadname sein (z. B. Runtime. getRuntime (). Load (homeavhliblibX11.so)). Erstens, wenn es einen Security Manager gibt, wird seine checkLink-Methode mit dem Dateinamen als Argument aufgerufen. Dies kann zu einer Sicherheitsausnahme führen. Dies entspricht der Methode loadLibrary (String). Aber es akzeptiert einen allgemeinen Dateinamen als Argument und nicht nur einen Bibliotheksnamen, so dass jede Datei nativen Code geladen werden kann. Die Methode System. load (String) ist die herkömmliche und bequeme Methode, diese Methode aufzurufen. LoadLibrary Lädt die dynamische Bibliothek mit dem angegebenen Bibliotheksnamen. Eine Datei, die nativen Code enthält, wird aus dem lokalen Dateisystem von einem Ort geladen, wo herkömmlicherweise Bibliotheksdateien erhalten werden. Die Details dieses Prozesses sind implementierungsabhängig. Die Zuordnung von einem Bibliotheksnamen zu einem bestimmten Dateinamen erfolgt systemspezifisch. Erstens, wenn es einen Sicherheits-Manager, seine CheckLink-Methode mit dem libname als Argument aufgerufen wird. Dies kann zu einer Sicherheitsausnahme führen. Die Methode System. loadLibrary (String) ist die herkömmliche und bequeme Methode, diese Methode aufzurufen. Wenn native Methoden für die Implementierung einer Klasse verwendet werden sollen, ist es eine Standardstrategie, den nativen Code in eine Bibliotheksdatei zu legen (aufzurufen LibFile) und dann einen statischen Initialisierer zu setzen: in der Klassendeklaration. Wenn die Klasse geladen und initialisiert wird, wird die notwendige native Code-Implementierung für die nativen Methoden dann ebenfalls geladen. Wird diese Methode mehrmals mit demselben Bibliotheksnamen aufgerufen, werden die zweiten und nachfolgenden Aufrufe ignoriert. Parameter: libname - der Name der Bibliothek. Throws: SecurityException - wenn ein Sicherheitsmanager vorhanden ist und seine checkLink-Methode das Laden der angegebenen dynamischen Bibliothek nicht zulässt UnbefriedigteLinkError - wenn die Bibliothek nicht vorhanden ist. NullPointerException - if libname ist null Siehe auch: SecurityException. SecurityManager. checkLink (java. lang. String) getLocalizedInputStream Veraltet. Ab JDK 1.1 ist die bevorzugte Methode, einen Byte-Stream in der lokalen Codierung in einen Zeichenstrom in Unicode zu übersetzen, über die InputStreamReader - und BufferedReader-Klassen. Erstellt eine lokalisierte Version eines Eingabestroms. Diese Methode nimmt ein InputStream und gibt ein InputStream-Äquivalent zum Argument in jeder Hinsicht zurück, außer dass es lokalisiert ist: Wenn Zeichen im lokalen Zeichensatz aus dem Stream gelesen werden, werden sie automatisch aus dem lokalen Zeichensatz in Unicode konvertiert. Wenn das Argument bereits ein lokalisierter Stream ist, kann er als Ergebnis zurückgegeben werden. GetLocalizedOutputStream Veraltet. Ab JDK 1.1 ist der bevorzugte Weg, einen Unicode-Zeichenstrom in einen Byte-Stream in der lokalen Codierung zu übersetzen, über den OutputStreamWriter. BufferedWriter. Und PrintWriter-Klassen. Erstellt eine lokalisierte Version eines Ausgabestreams. Diese Methode nimmt ein OutputStream und gibt in jedem Fall ein OutputStream-Äquivalent zum Argument zurück, außer dass es lokalisiert ist: Da Unicode-Zeichen in den Stream geschrieben werden, werden sie automatisch in den lokalen Zeichensatz konvertiert. Wenn das Argument bereits ein lokalisierter Stream ist, kann er als Ergebnis zurückgegeben werden. Einen Fehler oder eine Funktion übergeben Weitere Informationen zur API-Referenz - und Entwicklerdokumentation finden Sie unter Java SE-Dokumentation. Diese Dokumentation enthält detaillierte, entwicklerbezogene Beschreibungen mit konzeptionellen Übersichten, Definitionen von Begriffen, Workarounds und Arbeitsbeispielen. Copyright x00a9 1993, 2016, Oracle und seine Tochtergesellschaften. Alle Rechte vorbehalten. Die Verwendung unterliegt den Lizenzbestimmungen. Weitere Informationen finden Sie in der Dokumentation zur Umverteilungsrichtlinie. Scripting auf dieser Seite Tracks Traffic Traffic, aber ändert sich der Inhalt in keiner Weise.

Comments

Popular Posts