什么';What’java.io.BufferedWriter.min(intA,intB)的要点是什么?

什么';What’java.io.BufferedWriter.min(intA,intB)的要点是什么?,java,java-io,bufferedwriter,Java,Java Io,Bufferedwriter,在java.io.BufferedWriter中有一个方法: /** * Our own little min method, to avoid loading java.lang.Math if we've run * out of file descriptors and we're trying to print a stack trace. */ private int min(int a, int b) { if (a < b) return a; retu

java.io.BufferedWriter
中有一个方法:

/**
 * Our own little min method, to avoid loading java.lang.Math if we've run
 * out of file descriptors and we're trying to print a stack trace.
 */
private int min(int a, int b) {
    if (a < b) return a;
    return b;
}
我将进入日志:

[Loaded java.lang.Math from /opt/jdk/jdk1.8.0_65/jre/lib/rt.jar]

错误是这样说的:


如果您在尝试打印堆栈跟踪时用完了文件描述符,并且调用了
Math.min(a,b)
,并且类加载器尚未加载Math(不太可能,但可能会发生,例如在启动时),那么您甚至无法生成堆栈跟踪。因此,他们将
min
直接添加到
BufferedWriter
类中,以避免出现这种情况。

错误是:


如果您在尝试打印堆栈跟踪时用完了文件描述符,并且调用了
Math.min(a,b)
,并且类加载器尚未加载Math(不太可能,但可能会发生,例如在启动时),那么您甚至无法生成堆栈跟踪。因此,他们将
min
直接添加到
BufferedWriter
类中,以避免出现这种情况。

如果JVM很早就失败,可能还无法加载数学。在调用
main
之前,JVM做了大量工作并运行了大量代码。这意味着在你达到这一点之前,很多事情可能会出错

例如,这个简单的程序

public class HowManyStrings {
    public static void main(String[] args) throws IOException {
        System.out.println("Hello world");
        System.in.read();
    }
}
创建大约10000个对象


如果JVM很早就失败了,那么可能还没有加载Math。在调用
main
之前,JVM做了大量工作并运行了大量代码。这意味着在你达到这一点之前,很多事情可能会出错

例如,这个简单的程序

public class HowManyStrings {
    public static void main(String[] args) throws IOException {
        System.out.println("Hello world");
        System.in.read();
    }
}
创建大约10000个对象


Ha!可能是1995年写的。我认为这篇评论描述得够多了。你的问题是什么?哈!可能是1995年写的。我认为这篇评论描述得够多了。你的问题是什么?