📄 runtime.java
字号:
* <code>false</code>. There is a security check, <code>checkExit(0)</code>. * * @param finalizeOnExit whether to finalize all Objects on exit * @throws SecurityException if permission is denied * @see #exit(int) * @see #gc() * @since 1.1 * @deprecated never rely on finalizers to do a clean, thread-safe, * mop-up from your code */ public static void runFinalizersOnExit(boolean finalizeOnExit) { SecurityManager sm = securityManager; // Be thread-safe! if (sm != null) sm.checkExit(0); current.finalizeOnExit = finalizeOnExit; } /** * Create a new subprocess with the specified command line. Calls * <code>exec(cmdline, null, null)<code>. A security check is performed, * <code>checkExec</code>. * * @param cmdline the command to call * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmdline is null * @throws IndexOutOfBoundsException if cmdline is "" */ public Process exec(String cmdline) throws IOException { return exec(cmdline, null, null); } /** * Create a new subprocess with the specified command line and environment. * If the environment is null, the process inherits the environment of * this process. Calls <code>exec(cmdline, env, null)</code>. A security * check is performed, <code>checkExec</code>. * * @param cmdline the command to call * @param env the environment to use, in the format name=value * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmdline is null, or env has null entries * @throws IndexOutOfBoundsException if cmdline is "" */ public Process exec(String cmdline, String[] env) throws IOException { return exec(cmdline, env, null); } /** * Create a new subprocess with the specified command line, environment, and * working directory. If the environment is null, the process inherits the * environment of this process. If the directory is null, the process uses * the current working directory. This splits cmdline into an array, using * the default StringTokenizer, then calls * <code>exec(cmdArray, env, dir)</code>. A security check is performed, * <code>checkExec</code>. * * @param cmdline the command to call * @param env the environment to use, in the format name=value * @param dir the working directory to use * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmdline is null, or env has null entries * @throws IndexOutOfBoundsException if cmdline is "" * @since 1.3 */ public Process exec(String cmdline, String[] env, File dir) throws IOException { StringTokenizer t = new StringTokenizer(cmdline); String[] cmd = new String[t.countTokens()]; for (int i = 0; i < cmd.length; i++) cmd[i] = t.nextToken(); return exec(cmd, env, dir); } /** * Create a new subprocess with the specified command line, already * tokenized. Calls <code>exec(cmd, null, null)</code>. A security check * is performed, <code>checkExec</code>. * * @param cmd the command to call * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmd is null, or has null entries * @throws IndexOutOfBoundsException if cmd is length 0 */ public Process exec(String[] cmd) throws IOException { return exec(cmd, null, null); } /** * Create a new subprocess with the specified command line, already * tokenized, and specified environment. If the environment is null, the * process inherits the environment of this process. Calls * <code>exec(cmd, env, null)</code>. A security check is performed, * <code>checkExec</code>. * * @param cmd the command to call * @param env the environment to use, in the format name=value * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmd is null, or cmd or env has null * entries * @throws IndexOutOfBoundsException if cmd is length 0 */ public Process exec(String[] cmd, String[] env) throws IOException { return exec(cmd, env, null); } /** * Create a new subprocess with the specified command line, already * tokenized, and the specified environment and working directory. If the * environment is null, the process inherits the environment of this * process. If the directory is null, the process uses the current working * directory. A security check is performed, <code>checkExec</code>. * * @param cmd the command to call * @param env the environment to use, in the format name=value * @param dir the working directory to use * @return the Process object * @throws SecurityException if permission is denied * @throws IOException if an I/O error occurs * @throws NullPointerException if cmd is null, or cmd or env has null * entries * @throws IndexOutOfBoundsException if cmd is length 0 * @since 1.3 */ public Process exec(String[] cmd, String[] env, File dir) throws IOException { SecurityManager sm = securityManager; // Be thread-safe! if (sm != null) sm.checkExec(cmd[0]); return execInternal(cmd, env, dir); } /** * Returns the number of available processors currently available to the * virtual machine. This number may change over time; so a multi-processor * program want to poll this to determine maximal resource usage. * * @return the number of processors available, at least 1 */ public native int availableProcessors(); /** * Find out how much memory is still free for allocating Objects on the heap. * * @return the number of bytes of free memory for more Objects */ public native long freeMemory(); /** * Find out how much memory total is available on the heap for allocating * Objects. * * @return the total number of bytes of memory for Objects */ public native long totalMemory(); /** * Returns the maximum amount of memory the virtual machine can attempt to * use. This may be <code>Long.MAX_VALUE</code> if there is no inherent * limit (or if you really do have a 8 exabyte memory!). * * @return the maximum number of bytes the virtual machine will attempt * to allocate */ public native long maxMemory(); /** * Run the garbage collector. This method is more of a suggestion than * anything. All this method guarantees is that the garbage collector will * have "done its best" by the time it returns. Notice that garbage * collection takes place even without calling this method. */ public native void gc(); /** * Run finalization on all Objects that are waiting to be finalized. Again, * a suggestion, though a stronger one than {@link #gc()}. This calls the * <code>finalize</code> method of all objects waiting to be collected. * * @see #finalize() */ public native void runFinalization(); /** * Tell the VM to trace every bytecode instruction that executes (print out * a trace of it). No guarantees are made as to where it will be printed, * and the VM is allowed to ignore this request. * * @param on whether to turn instruction tracing on */ public native void traceInstructions(boolean on); /** * Tell the VM to trace every method call that executes (print out a trace * of it). No guarantees are made as to where it will be printed, and the * VM is allowed to ignore this request. * * @param on whether to turn method tracing on */ public native void traceMethodCalls(boolean on); /** * Load a native library using the system-dependent filename. This is similar * to loadLibrary, except the only name mangling done is inserting "_g" * before the final ".so" if the VM was invoked by the name "java_g". There * may be a security check, of <code>checkLink</code>. * * @param filename the file to load * @throws SecurityException if permission is denied * @throws UnsatisfiedLinkError if the library is not found */ public void load(String filename) { SecurityManager sm = securityManager; // Be thread-safe! if (sm != null) sm.checkLink(filename); _load(filename, false); } /** * Load a native library using a system-independent "short name" for the * library. It will be transformed to a correct filename in a * system-dependent manner (for example, in Windows, "mylib" will be turned * into "mylib.dll"). This is done as follows: if the context that called * load has a ClassLoader cl, then <code>cl.findLibrary(libpath)</code> is * used to convert the name. If that result was null, or there was no class * loader, this searches each directory of the system property * <code>java.library.path</code> for a file named * <code>System.mapLibraryName(libname)</code>. There may be a security * check, of <code>checkLink</code>. * * @param filename the file to load * @throws SecurityException if permission is denied * @throws UnsatisfiedLinkError if the library is not found * @see System#mapLibraryName(String) * @see ClassLoader#findLibrary(String) */ public void loadLibrary(String libname) { // This is different from the Classpath implementation, but I // believe it is more correct. SecurityManager sm = securityManager; // Be thread-safe! if (sm != null) sm.checkLink(libname); _load(libname, true); } /** * Return a localized version of this InputStream, meaning all characters * are localized before they come out the other end. * * @param in the stream to localize * @return the localized stream * @deprecated <code>InputStreamReader</code> is the preferred way to read * local encodings */ public InputStream getLocalizedInputStream(InputStream in) { return in; } /** * Return a localized version of this OutputStream, meaning all characters * are localized before they are sent to the other end. * * @param out the stream to localize * @return the localized stream * @deprecated <code>OutputStreamWriter</code> is the preferred way to write * local encodings */ public OutputStream getLocalizedOutputStream(OutputStream out) { return out; } /** * Native method that actually shuts down the virtual machine. * * @param status the status to end the process with */ native void exitInternal(int status); /** * Load a file. If it has already been loaded, do nothing. The name has * already been mapped to a true filename. * * @param filename the file to load * @param do_search True if we should search the load path for the file */ native void _load(String filename, boolean do_search); /** *This is a helper function for the ClassLoader which can load * compiled libraries. Returns true if library (which is just the * base name -- path searching is done by this function) was loaded, * false otherwise. */ native boolean loadLibraryInternal(String libname); /** * A helper for the constructor which does some internal native * initialization. */ private native void init (); /** * Map a system-independent "short name" to the full file name, and append * it to the path. * XXX This method is being replaced by System.mapLibraryName. * * @param pathname the path * @param libname the short version of the library name * @return the full filename */ static native String nativeGetLibname(String pathname, String libname); /** * Execute a process. The command line has already been tokenized, and * the environment should contain name=value mappings. If directory is null, * use the current working directory; otherwise start the process in that * directory. * * @param cmd the non-null command tokens * @param env the non-null environment setup * @param dir the directory to use, may be null * @return the newly created process * @throws NullPointerException if cmd or env have null elements */ native Process execInternal(String[] cmd, String[] env, File dir); /** * Get the system properties. This is done here, instead of in System, * because of the bootstrap sequence. Note that the native code should * not try to use the Java I/O classes yet, as they rely on the properties * already existing. The only safe method to use to insert these default * system properties is {@link Properties#setProperty(String, String)}. * * <p>These properties MUST include: * <dl> * <dt>java.version <dd>Java version number * <dt>java.vendor <dd>Java vendor specific string * <dt>java.vendor.url <dd>Java vendor URL * <dt>java.home <dd>Java installation directory * <dt>java.vm.specification.version <dd>VM Spec version * <dt>java.vm.specification.vendor <dd>VM Spec vendor * <dt>java.vm.specification.name <dd>VM Spec name * <dt>java.vm.version <dd>VM implementation version * <dt>java.vm.vendor <dd>VM implementation vendor * <dt>java.vm.name <dd>VM implementation name * <dt>java.specification.version <dd>Java Runtime Environment version * <dt>java.specification.vendor <dd>Java Runtime Environment vendor * <dt>java.specification.name <dd>Java Runtime Environment name * <dt>java.class.version <dd>Java class version number * <dt>java.class.path <dd>Java classpath * <dt>java.library.path <dd>Path for finding Java libraries * <dt>java.io.tmpdir <dd>Default temp file path * <dt>java.compiler <dd>Name of JIT to use * <dt>java.ext.dirs <dd>Java extension path * <dt>os.name <dd>Operating System Name * <dt>os.arch <dd>Operating System Architecture * <dt>os.version <dd>Operating System Version * <dt>file.separator <dd>File separator ("/" on Unix) * <dt>path.separator <dd>Path separator (":" on Unix) * <dt>line.separator <dd>Line separator ("\n" on Unix) * <dt>user.name <dd>User account name * <dt>user.home <dd>User home directory * <dt>user.dir <dd>User's current working directory * </dl> * * @param p the Properties object to insert the system properties into */ static native void insertSystemProperties(Properties p);} // class Runtime
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -