⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 runtime.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * @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.current; // Be thread-safe!    if (sm != null)      sm.checkExit(0);    VMRuntime.runFinalizersOnExit(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.current; // Be thread-safe!    if (sm != null)      sm.checkExec(cmd[0]);    return VMRuntime.exec(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 int availableProcessors()  {    return VMRuntime.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 long freeMemory()  {    return VMRuntime.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 long totalMemory()  {    return VMRuntime.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 long maxMemory()  {    return VMRuntime.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 void gc()  {    VMRuntime.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 void runFinalization()  {    VMRuntime.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 void traceInstructions(boolean on)  {    VMRuntime.traceInstructions(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 void traceMethodCalls(boolean on)  {    VMRuntime.traceMethodCalls(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>.   *   * <p>   * The library is loaded using the class loader associated with the   * class associated with the invoking method.   *   * @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)  {    load(filename, VMStackWalker.getCallingClassLoader());  }  /**   * Same as <code>load(String)</code> but using the given loader.   *   * @param filename the file to load   * @param loader class loader, or <code>null</code> for the boot loader   * @throws SecurityException if permission is denied   * @throws UnsatisfiedLinkError if the library is not found   */  void load(String filename, ClassLoader loader)  {    SecurityManager sm = SecurityManager.current; // Be thread-safe!    if (sm != null)      sm.checkLink(filename);    if (loadLib(filename, loader) == 0)      throw new UnsatisfiedLinkError("Could not load library " + filename);  }  /**   * Do a security check on the filename and then load the native library.   *   * @param filename the file to load   * @param loader class loader, or <code>null</code> for the boot loader   * @return 0 on failure, nonzero on success   * @throws SecurityException if file read permission is denied   */  private static int loadLib(String filename, ClassLoader loader)  {    SecurityManager sm = SecurityManager.current; // Be thread-safe!    if (sm != null)      sm.checkRead(filename);    return VMRuntime.nativeLoad(filename, loader);  }  /**   * 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>.   *   * <p>Note: Besides <code>java.library.path</code> a VM may chose to search   * for native libraries in a path that is specified by the   * <code>gnu.classpath.boot.library.path</code> system property. However   * this is for internal usage or development of GNU Classpath only.   * <b>A Java application must not load a non-system library by changing   * this property otherwise it will break compatibility.</b></p>   *   * <p>   * The library is loaded using the class loader associated with the   * class associated with the invoking method.   *   * @param libname the library 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)  {    loadLibrary(libname, VMStackWalker.getCallingClassLoader());  }  /**   * Same as <code>loadLibrary(String)</code> but using the given loader.   *   * @param libname the library to load   * @param loader class loader, or <code>null</code> for the boot loader   * @throws SecurityException if permission is denied   * @throws UnsatisfiedLinkError if the library is not found   */  void loadLibrary(String libname, ClassLoader loader)  {    SecurityManager sm = SecurityManager.current; // Be thread-safe!    if (sm != null)      sm.checkLink(libname);    String filename;    if (loader != null && (filename = loader.findLibrary(libname)) != null)      {	if (loadLib(filename, loader) != 0)	  return;      }    else      {	filename = VMRuntime.mapLibraryName(libname);	for (int i = 0; i < libpath.length; i++)	  if (loadLib(libpath[i] + filename, loader) != 0)	    return;	// OK. That did not work. Let's be creative and try different	// prefix-suffix combinations.	// NB: Yes, this is a wasteful implementation.	String [] prefixes = {"lib",			      "cyg", 			      "" };	String [] suffixes = {".so",			      ".dll", 			      ".la",			      ".a",			      ".dylib", 			      ".jnilib",			      ".dll.a"};	for (int j = 0; j < prefixes.length; j++)	    for (int k = 0; k < suffixes.length; k++)		for (int i = 0; i < libpath.length; i++)		    if (loadLib(libpath[i] + prefixes[j] + libname + suffixes[k], loader) != 0)			return;      }    throw new UnsatisfiedLinkError("Native library `" + libname      + "' not found (as file `" + filename       + "' in class loader " + loader      + ") in gnu.classpath.boot.library.path and java.library.path `"      + Arrays.asList(libpath) + "'");  }  /**   * 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   * @XXX This implementation does not localize, yet.   */  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   * @XXX This implementation does not localize, yet.   */  public OutputStream getLocalizedOutputStream(OutputStream out)  {    return out;  }} // class Runtime

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -