Java Tutorial/Development/Runtime System
Содержание
- 1 Demonstrate exec().
- 2 Demonstrate totalMemory(), freeMemory() and gc().
- 3 Determine when the application is about to exit
- 4 Display the amount of free memory in the Java Virtual Machine.
- 5 Display the maximum amount of memory
- 6 Display the total amount of memory in the Java virtual machine.
- 7 Execute a command from code
- 8 Execute a command with more than one argument
- 9 Execute system command
- 10 From Runtime.exec() to ProcessBuilder
- 11 Get Number of Available Processors
- 12 Launch a Unix script with Java
- 13 Milliseconds elapsed since January 1, 1970
- 14 Read output from a Command execution
- 15 Registering Shutdown Hooks for Virtual Machine
- 16 Send an Input to a Command
- 17 System.getProperty
- 18 Timing program execution.
- 19 Using arraycopy().
- 20 Wait until notepad is terminated.
Demonstrate exec().
class ExecDemo {
public static void main(String args[]) {
Runtime r = Runtime.getRuntime();
Process p = null;
try {
p = r.exec("notepad");
} catch (Exception e) {
System.out.println("Error executing notepad.");
}
}
}
Demonstrate totalMemory(), freeMemory() and gc().
class MemoryDemo {
public static void main(String args[]) {
Runtime r = Runtime.getRuntime();
long mem1, mem2;
Integer someints[] = new Integer[1000];
System.out.println("Total memory is: " + r.totalMemory());
mem1 = r.freeMemory();
System.out.println("Initial free memory: " + mem1);
r.gc();
mem1 = r.freeMemory();
System.out.println("Free memory after garbage collection: " + mem1);
for (int i = 0; i < 1000; i++)
someints[i] = new Integer(i); // allocate integers
mem2 = r.freeMemory();
System.out.println("Free memory after allocation: " + mem2);
System.out.println("Memory used by allocation: " + (mem1 - mem2));
for (int i = 0; i < 1000; i++)
someints[i] = null;
r.gc(); // request garbage collection
mem2 = r.freeMemory();
System.out.println("Free memory after collecting" + " discarded Integers: " + mem2);
}
}
Determine when the application is about to exit
public class Main {
public static void main(String[] argv) throws Exception {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
System.out.println("Do shutdown work ...");
}
});
}
}
Display the amount of free memory in the Java Virtual Machine.
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0.00");
long freeMem = Runtime.getRuntime().freeMemory();
System.out.println(df.format(freeMem / 1000000F) + " MB");
}
}
Display the maximum amount of memory
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0.00");
long maxMem = Runtime.getRuntime().maxMemory();
System.out.println(df.format(maxMem / 1000000F) + " MB");
}
}
Display the total amount of memory in the Java virtual machine.
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
DecimalFormat df = new DecimalFormat("0.00");
long totalMem = Runtime.getRuntime().totalMemory();
System.out.println(df.format(totalMem / 1000000F) + " MB");
}
}
Execute a command from code
public class Main {
public static void main(String[] argv) throws Exception {
// Execute a command without arguments
String command = "ls";
Process child = Runtime.getRuntime().exec(command);
// Execute a command with an argument
command = "ls /tmp";
child = Runtime.getRuntime().exec(command);
}
}
Execute a command with more than one argument
public class Main {
public static void main(String[] argv) throws Exception {
// Execute a command with an argument that contains a space
String[] commands = new String[] { "grep", "hello world", "/tmp/f.txt" };
commands = new String[] { "grep", "hello world", "c:\\f.txt" };
Process child = Runtime.getRuntime().exec(commands);
}
}
Execute system command
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
String cmd = "cmd.exe /c start ";
// String file = "c:\\version.txt";
// String file = "http://www.google.ru";
// String file = "c:\\";
// String file = "mailto:author@my.ru";
String file = "mailto:";
Runtime.getRuntime().exec(cmd + file);
}
}
From Runtime.exec() to ProcessBuilder
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String args[]) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(args);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.printf("Output of running %s is:", Arrays.toString(args));
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
Get Number of Available Processors
public class Main {
public static void main(String[] args) {
Runtime runtime = Runtime.getRuntime();
int nrOfProcessors = runtime.availableProcessors();
System.out.println("Number of processors available to the Java Virtual Machine: "
+ nrOfProcessors);
}
}
// Number of processors available to the Java Virtual Machine: 2
Launch a Unix script with Java
public class Main {
public static void main(String[] argv) throws Exception {
String[] cmd = { "/bin/sh", "-c", "ls > hello" };
Runtime.getRuntime().exec(cmd);
}
}
Milliseconds elapsed since January 1, 1970
import java.util.Properties;
public class SystemApp {
public static void main(String args[]) {
long time = System.currentTimeMillis();
System.out.println(time);
Properties p = System.getProperties();
p.list(System.out);
System.exit(13);
}
}
Read output from a Command execution
import java.io.InputStream;
public class Main {
public static void main(String[] argv) throws Exception {
String command = "ls";
Process child = Runtime.getRuntime().exec(command);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.println((char) c);
}
in.close();
}
}
Registering Shutdown Hooks for Virtual Machine
public class Main implements Runnable {
public void run() {
System.out.println("Shutting down");
}
public static void main(String[] arg) {
Runtime runTime = Runtime.getRuntime();
Main hook = new Main();
runTime.addShutdownHook(new Thread(hook));
}
}
Send an Input to a Command
import java.io.OutputStream;
public class Main {
public static void main(String[] argv) throws Exception {
String command = "cat";
Process child = Runtime.getRuntime().exec(command);
OutputStream out = child.getOutputStream();
out.write("some text".getBytes());
out.close();
}
}
System.getProperty
class ShowUserDir {
public static void main(String args[]) {
System.out.println(System.getProperty("user.dir"));
}
}
The following properties are available:
file.separator
java.specification.version
java.vm.version
java.class.path
java.vendor
line.separator
java.class.version
java.vendor.url
os.arch
java.rupiler
java.version
os.name
java.ext.dirs
java.vm.name
os.version
java.home
java.vm.specification.name
path.separator
java.io.tmpdir
java.vm.specification.vendor
user.dir
java.library.path
java.vm.specification.version
user.home
java.specification.name
java.vm.vendor
user.name
java.specification.vendor
Timing program execution.
class Elapsed {
public static void main(String args[]) {
long start, end;
System.out.println("Timing a for loop from 0 to 1,000,000");
start = System.currentTimeMillis(); // get starting time
for (int i = 0; i < 1000000; i++)
;
end = System.currentTimeMillis(); // get ending time
System.out.println("Elapsed time: " + (end - start));
}
}
Using arraycopy().
class ACDemo {
static byte a[] = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 };
static byte b[] = { 77, 77, 77, 77, 77, 77, 77, 77, 77, 77 };
public static void main(String args[]) {
System.out.println("a = " + new String(a));
System.out.println("b = " + new String(b));
System.arraycopy(a, 0, b, 0, a.length);
System.out.println("a = " + new String(a));
System.out.println("b = " + new String(b));
System.arraycopy(a, 0, a, 1, a.length - 1);
System.arraycopy(b, 1, b, 0, b.length - 1);
System.out.println("a = " + new String(a));
System.out.println("b = " + new String(b));
}
}
Wait until notepad is terminated.
class ExecDemoFini {
public static void main(String args[]) {
Runtime r = Runtime.getRuntime();
Process p = null;
try {
p = r.exec("notepad");
p.waitFor();
} catch (Exception e) {
System.out.println("Error executing notepad.");
}
System.out.println("Notepad returned " + p.exitValue());
}
}