Java by API/java.lang/Runtime — различия между версиями

Материал из Java эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Версия 17:43, 31 мая 2010

Runtime: addShutdownHook(Thread hook)

 
public class MainClass {
  public static void main(String[] args) throws Exception {
    Object f = new Object() {
      public void finalize() {
        System.out.println("Running finalize()");
      }
    };
    Runtime.getRuntime().addShutdownHook(new Thread() {
      public void run() {
        System.out.println("Running Shutdown Hook");
      }
    });
    f = null;
    System.gc();
    System.out.println("Calling System.exit()");
    System.exit(0);
  }
}





Runtime: availableProcessors()

  
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





Runtime: exec(String[] command)

 
/*
 * Output:
 * 
 *   
 * 
 *  
 */
public class MainClass {
  public static void main(String args[]) {
  Runtime r = Runtime.getRuntime();
  Process p = null;
  String cmd[] = { "notepad", "/java/src/java/lang/Runtime.java" };
  try {
      p = r.exec(cmd);
  } catch (Exception e) {
      System.out.println("error executing " + cmd[0]);
  }
  }
}





Runtime: exec(String command) (2)

 
/*
 * Output: 
 */
public class MainClass {
  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.");
    }
  }
}





Runtime: freeMemory()

 
/*
 * Output: 
Total memory is: 2031616
Initial free memory: 1774312
Free memory after garbage collection: 1875680
Free memory after allocation: 1715296
Memory used by allocation: 160384
Free memory after collecting discarded Integers: 1875680
 */
public class MainClass {
  public static void main(String args[]) {
    Runtime r = Runtime.getRuntime();
    long mem1, mem2;
    Integer someints[] = new Integer[10000];
    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 < someints.length; 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 < someints.length; i++)
      someints[i] = null;
    r.gc(); // request garbage collection
    mem2 = r.freeMemory();
    System.out.println("Free memory after collecting" + " discarded Integers: "
        + mem2);
  }
}





Runtime: gc()

 
/*
 * Output: 
Total memory is: 2031616
Initial free memory: 1774312
Free memory after garbage collection: 1875680
Free memory after allocation: 1715296
Memory used by allocation: 160384
Free memory after collecting discarded Integers: 1875680
 */
public class MainClass {
  public static void main(String args[]) {
    Runtime r = Runtime.getRuntime();
    long mem1, mem2;
    Integer someints[] = new Integer[10000];
    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 < someints.length; 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 < someints.length; i++)
      someints[i] = null;
    r.gc(); // request garbage collection
    mem2 = r.freeMemory();
    System.out.println("Free memory after collecting" + " discarded Integers: "
        + mem2);
  }
}





Runtime.getRuntime()

 
/*
 * Output:
 * 
 *   
 * 
 *  
 */
public class MainClass {
  public static void main(String args[]) {
  Runtime r = Runtime.getRuntime();
  Process p = null;
  String cmd[] = { "notepad", "/java/src/java/lang/Runtime.java" };
  try {
      p = r.exec(cmd);
  } catch (Exception e) {
      System.out.println("error executing " + cmd[0]);
  }
  }
}





Runtime: maxMemory()

  
public class Main {
  public static void main(String[] argv) throws Exception {
    long heapSize = Runtime.getRuntime().totalMemory();
    long heapMaxSize = Runtime.getRuntime().maxMemory();
    long heapFreeSize = Runtime.getRuntime().freeMemory();
  }
}





Runtime: totalMemory()

 
/*
 * Output: 
Total memory is: 2031616
Initial free memory: 1774312
Free memory after garbage collection: 1875680
Free memory after allocation: 1715296
Memory used by allocation: 160384
Free memory after collecting discarded Integers: 1875680
 */
public class MainClass {
  public static void main(String args[]) {
    Runtime r = Runtime.getRuntime();
    long mem1, mem2;
    Integer someints[] = new Integer[10000];
    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 < someints.length; 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 < someints.length; i++)
      someints[i] = null;
    r.gc(); // request garbage collection
    mem2 = r.freeMemory();
    System.out.println("Free memory after collecting" + " discarded Integers: "
        + mem2);
  }
}