Взаимодействие с системой
Класс System позволяет осуществить и некоторое взаимодействие с системой во время выполнения программы (run time). Но кроме него для этого есть специальный класс Runtime.
Класс Runtime содержит некоторые методы взаимодействия с JVM во время выполнения программы. Каждое приложение может получить только один экземпляр данного класса статическим методом getRuntime (). Все вызовы этого метода возвращают ссылку на один и тот же объект.
Методы fгееМеmогу () и totalMemory () возвращают количество свободной и всей памяти, находящейся в распоряжении JVM для размещения объектов, в байтах, в виде числа типа long. He стоит твердо опираться на эти числа, поскольку количество памяти меняется динамически.
Метод exit (int status) запускает процесс останова JVM и передает операционной системе статус завершения status. По соглашению, ненулевой статус означает ненормальное завершение. Удобнее использовать аналогичный метод класса system, который является статическим.
Метод hait (int status) осуществляет немедленный останов JVM. Он не завершает запущенные процессы нормально и должен использоваться только в аварийных ситуациях.
Метод loadbibrary(string libName) позволяет подгрузить динамическую библиотеку во время выполнения по ее имени libName.
Метод load (string fileName) подгружает динамическую библиотеку по имени файла fileName, в котором она хранится.
Впрочем, вместо этих методов удобнее использовать статические методы класса system с теми же именами и аргументами.
Метод gc() запускает процесс освобождения ненужной оперативной памяти (garbage collection). Этот процесс периодически запускается самой виртуальной машиной Java и выполняется на фоне с небольшим приоритетом, но можно его запустить и из программы. Опять-таки удобнее использовать статический Метод System.gc ().
Наконец, несколько методов ехес () запускают в отдельных процессах исполнимые файлы. Аргументом этих методов служит командная строка исполнимого файла.
Например, Runtime.getRuntime ().exec ("notepad") запускает программу Блокнот на платформе MS Windows.
Методы exec () возвращают экземпляр класса process, позволяющего управлять запущенным процессом. Методом destroy () можно остановить процесс, методом exitValue() получить его код завершения. метод waitFor() приостанавливает основной подпроцесс до тех пор, пока не закончится запущенный процесс. Три метода getlnputStream(), getOutputStream() и getErrorStream() возвращают входной, выходной поток и поток ошибок запущенного процесса (см. главу 18).