📄 runtime.java
字号:
* @see java.lang.SecurityManager#checkExec(java.lang.String) * @since 1.3 */ public Process exec(String cmdarray[], String envp[], File dir) throws IOException { cmdarray = (String[])cmdarray.clone(); envp = (envp != null ? (String[])envp.clone() : null); if (cmdarray.length == 0) { throw new IndexOutOfBoundsException(); } for (int i = 0; i < cmdarray.length; i++) { if (cmdarray[i] == null) { throw new NullPointerException(); } } if (envp != null) { for (int i = 0; i < envp.length; i++) { if (envp[i] == null) { throw new NullPointerException(); } } } SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkExec(cmdarray[0]); } String path = (dir == null ? null : dir.getPath()); return execInternal(cmdarray, envp, path); } /** * Returns the number of processors available to the Java virtual machine. * * <p> This value may change during a particular invocation of the virtual * machine. Applications that are sensitive to the number of available * processors should therefore occasionally poll this property and adjust * their resource usage appropriately. </p> * * @return the maximum number of processors available to the virtual * machine; never smaller than one */ //public native int availableProcessors(); public int availableProcessors() { return 1; // assume that CVM supports only one } /** * Returns the amount of free memory in the Java Virtual Machine. * Calling the * <code>gc</code> method may result in increasing the value returned * by <code>freeMemory.</code> * * @return an approximation to the total amount of memory currently * available for future allocated objects, measured in bytes. */ public native long freeMemory(); /** * Returns the total amount of memory in the Java virtual machine. * The value returned by this method may vary over time, depending on * the host environment. * <p> * Note that the amount of memory required to hold an object of any * given type may be implementation-dependent. * * @return the total amount of memory currently available for current * and future objects, measured in bytes. */ public native long totalMemory(); /** * Returns the maximum amount of memory that the Java virtual machine will * attempt to use. If there is no inherent limit then the value {@link * java.lang.Long#MAX_VALUE} will be returned. </p> * * @return the maximum amount of memory that the virtual machine will * attempt to use, measured in bytes */ public native long maxMemory(); /** * Runs the garbage collector. * Calling this method suggests that the Java virtual machine expend * effort toward recycling unused objects in order to make the memory * they currently occupy available for quick reuse. When control * returns from the method call, the virtual machine has made * its best effort to recycle all discarded objects. * <p> * The name <code>gc</code> stands for "garbage * collector". The virtual machine performs this recycling * process automatically as needed, in a separate thread, even if the * <code>gc</code> method is not invoked explicitly. * <p> * The method {@link System#gc()} is the conventional and convenient * means of invoking this method. */ public native void gc(); /* Wormhole for calling java.lang.ref.Finalizer.runFinalization */ private static native void runFinalization0(); /** * Runs the finalization methods of any objects pending finalization. * Calling this method suggests that the Java virtual machine expend * effort toward running the <code>finalize</code> methods of objects * that have been found to be discarded but whose <code>finalize</code> * methods have not yet been run. When control returns from the * method call, the virtual machine has made a best effort to * complete all outstanding finalizations. * <p> * The virtual machine performs the finalization process * automatically as needed, in a separate thread, if the * <code>runFinalization</code> method is not invoked explicitly. * <p> * The method {@link System#runFinalization()} is the conventional * and convenient means of invoking this method. * * @see java.lang.Object#finalize() */ public void runFinalization() { runFinalization0(); } /** * Enables/Disables tracing of instructions. * If the <code>boolean</code> argument is <code>true</code>, this * method suggests that the Java virtual machine emit debugging * information for each instruction in the virtual machine as it * is executed. The format of this information, and the file or other * output stream to which it is emitted, depends on the host environment. * The virtual machine may ignore this request if it does not support * this feature. The destination of the trace output is system * dependent. * <p> * If the <code>boolean</code> argument is <code>false</code>, this * method causes the virtual machine to stop performing the * detailed instruction trace it is performing. * * @param on <code>true</code> to enable instruction tracing; * <code>false</code> to disable this feature. */ public native void traceInstructions(boolean on); /** * Enables/Disables tracing of method calls. * If the <code>boolean</code> argument is <code>true</code>, this * method suggests that the Java virtual machine emit debugging * information for each method in the virtual machine as it is * called. The format of this information, and the file or other output * stream to which it is emitted, depends on the host environment. The * virtual machine may ignore this request if it does not support * this feature. * <p> * Calling this method with argument false suggests that the * virtual machine cease emitting per-call debugging information. * * @param on <code>true</code> to enable instruction tracing; * <code>false</code> to disable this feature. */ public native void traceMethodCalls(boolean on); /** * Loads the specified filename as a dynamic library. The filename * argument must be a complete path name. * From <code>java_g</code> it will automagically insert "_g" before the * ".so" (for example * <code>Runtime.getRuntime().load("/home/avh/lib/libX11.so");</code>). * <p> * First, if there is a security manager, its <code>checkLink</code> * method is called with the <code>filename</code> as its argument. * This may result in a security exception. * <p> * This is similar to the method {@link #loadLibrary(String)}, but it * accepts a general file name as an argument rather than just a library * name, allowing any file of native code to be loaded. * <p> * The method {@link System#load(String)} is the conventional and * convenient means of invoking this method. * * @param filename the file to load. * @exception SecurityException if a security manager exists and its * <code>checkLink</code> method doesn't allow * loading of the specified dynamic library * @exception UnsatisfiedLinkError if the file does not exist. * @see java.lang.Runtime#getRuntime() * @see java.lang.SecurityException * @see java.lang.SecurityManager#checkLink(java.lang.String) */ public void load(String filename) { load0(System.getCallerClass(), filename); } synchronized void load0(Class fromClass, String filename) { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkLink(filename); } if (!(new File(filename).isAbsolute())) { throw new UnsatisfiedLinkError( "Expecting an absolute path of the library: " + filename); } ClassLoader.loadLibrary(fromClass, filename, true); } /** * Loads the dynamic library with the specified library name. * A file containing native code is loaded from the local file system * from a place where library files are conventionally obtained. The * details of this process are implementation-dependent. The * mapping from a library name to a specific filename is done in a * system-specific manner. * <p> * First, if there is a security manager, its <code>checkLink</code> * method is called with the <code>libname</code> as its argument. * This may result in a security exception. * <p> * The method {@link System#loadLibrary(String)} is the conventional * and convenient means of invoking this method. If native * methods are to be used in the implementation of a class, a standard * strategy is to put the native code in a library file (call it * <code>LibFile</code>) and then to put a static initializer: * <blockquote><pre> * static { System.loadLibrary("LibFile"); } * </pre></blockquote> * within the class declaration. When the class is loaded and * initialized, the necessary native code implementation for the native * methods will then be loaded as well. * <p> * If this method is called more than once with the same library * name, the second and subsequent calls are ignored. * * @param libname the name of the library. * @exception SecurityException if a security manager exists and its * <code>checkLink</code> method doesn't allow * loading of the specified dynamic library * @exception UnsatisfiedLinkError if the library does not exist. * @see java.lang.SecurityException * @see java.lang.SecurityManager#checkLink(java.lang.String) */ public void loadLibrary(String libname) { loadLibrary0(System.getCallerClass(), libname); } synchronized void loadLibrary0(Class fromClass, String libname) { SecurityManager security = System.getSecurityManager(); if (security != null) { security.checkLink(libname); } if (libname.indexOf((int)File.separatorChar) != -1) { throw new UnsatisfiedLinkError( "Directory separator should not appear in library name: " + libname); } ClassLoader.loadLibrary(fromClass, libname, false); } /** * Creates a localized version of an input stream. This method takes * an <code>InputStream</code> and returns an <code>InputStream</code> * equivalent to the argument in all respects except that it is * localized: as characters in the local character set are read from * the stream, they are automatically converted from the local * character set to Unicode. * <p> * If the argument is already a localized stream, it may be returned * as the result. * * @param in InputStream to localize * @return a localized input stream * @see java.io.InputStream * @see java.io.BufferedReader#BufferedReader(java.io.Reader) * @see java.io.InputStreamReader#InputStreamReader(java.io.InputStream) * @deprecated As of JDK 1.1, the preferred way to translate a byte * stream in the local encoding into a character stream in Unicode is via * the <code>InputStreamReader</code> and <code>BufferedReader</code> * classes. * public InputStream getLocalizedInputStream(InputStream in) { return in; } */ /** * Creates a localized version of an output stream. This method * takes an <code>OutputStream</code> and returns an * <code>OutputStream</code> equivalent to the argument in all respects * except that it is localized: as Unicode characters are written to * the stream, they are automatically converted to the local * character set. * <p> * If the argument is already a localized stream, it may be returned * as the result. * * deprecated As of JDK 1.1, the preferred way to translate a * Unicode character stream into a byte stream in the local encoding is via * the <code>OutputStreamWriter</code>, <code>BufferedWriter</code>, and * <code>PrintWriter</code> classes. * * param out OutputStream to localize * return a localized output stream * see java.io.OutputStream * see java.io.BufferedWriter#BufferedWriter(java.io.Writer) * see java.io.OutputStreamWriter#OutputStreamWriter(java.io.OutputStream) * see java.io.PrintWriter#PrintWriter(java.io.OutputStream) * public OutputStream getLocalizedOutputStream(OutputStream out) { return out; } */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -