001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package java.lang;
028:
029: /**
030: * Every Java application has a single instance of class
031: * <code>Runtime</code> that allows the application to interface with
032: * the environment in which the application is running. The current
033: * runtime can be obtained from the <code>getRuntime</code> method.
034: * <p>
035: * An application cannot create its own instance of this class.
036: *
037: * @version 12/17/01 (CLDC 1.1)
038: * @see java.lang.Runtime#getRuntime()
039: * @since JDK1.0, CLDC 1.0
040: */
041:
042: public class Runtime {
043: private static Runtime currentRuntime = new Runtime();
044:
045: /**
046: * Returns the runtime object associated with the current Java application.
047: * Most of the methods of class <code>Runtime</code> are instance
048: * methods and must be invoked with respect to the current runtime object.
049: *
050: * @return the <code>Runtime</code> object associated with the current
051: * Java application.
052: */
053: public static Runtime getRuntime() {
054: return currentRuntime;
055: }
056:
057: /** Don't let anyone else instantiate this class */
058: private Runtime() {
059: }
060:
061: /* Helper for exit
062: */
063: private native void exitInternal(int status);
064:
065: /**
066: * Terminates the currently running Java application. This
067: * method never returns normally.
068: * <p>
069: * The argument serves as a status code; by convention, a nonzero
070: * status code indicates abnormal termination.
071: *
072: * @param status exit status.
073: * @since JDK1.0
074: */
075: public void exit(int status) {
076: exitInternal(status);
077: }
078:
079: /**
080: * Returns the amount of free memory in the system. Calling the
081: * <code>gc</code> method may result in increasing the value returned
082: * by <code>freeMemory.</code>
083: *
084: * @return an approximation to the total amount of memory currently
085: * available for future allocated objects, measured in bytes.
086: */
087: public native long freeMemory();
088:
089: /**
090: * Returns the total amount of memory in the Java Virtual Machine.
091: * The value returned by this method may vary over time, depending on
092: * the host environment.
093: * <p>
094: * Note that the amount of memory required to hold an object of any
095: * given type may be implementation-dependent.
096: *
097: * @return the total amount of memory currently available for current
098: * and future objects, measured in bytes.
099: */
100: public native long totalMemory();
101:
102: /**
103: * Runs the garbage collector.
104: * Calling this method suggests that the Java Virtual Machine expend
105: * effort toward recycling unused objects in order to make the memory
106: * they currently occupy available for quick reuse. When control
107: * returns from the method call, the Java Virtual Machine has made
108: * its best effort to recycle all discarded objects.
109: * <p>
110: * The name <code>gc</code> stands for "garbage
111: * collector". The Java Virtual Machine performs this recycling
112: * process automatically as needed even if the
113: * <code>gc</code> method is not invoked explicitly.
114: * <p>
115: * The method {@link System#gc()} is the conventional and convenient
116: * means of invoking this method.
117: */
118: public native void gc();
119:
120: }
|