Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于JVM堆参数-Xmx和-Xms_Java_Jvm_Jvm Arguments - Fatal编程技术网

Java 关于JVM堆参数-Xmx和-Xms

Java 关于JVM堆参数-Xmx和-Xms,java,jvm,jvm-arguments,Java,Jvm,Jvm Arguments,我有以下代码: public static void main(String[] args) { for(int i=0;i<10;i++) { System.out.println(i); byte[] b = new byte[1024*1024*5]; } } 您错误地认为该程序只分配了5MB内存,这是错误的。 创建5MB数组并不意味着没有额外的内存用于类加载和其他事情 因此,为了回答您的问题,您为进程分配的内存太少。因为执行程序涉及

我有以下代码:

public static void main(String[] args) {
    for(int i=0;i<10;i++) {
        System.out.println(i);
        byte[] b = new byte[1024*1024*5];
    }
}

您错误地认为该程序只分配了5MB内存,这是错误的。 创建5MB数组并不意味着没有额外的内存用于类加载和其他事情


因此,为了回答您的问题,您为进程分配的内存太少。

因为执行程序涉及创建类加载器、加载类、实例化系统输出流等。这些操作还需要在堆上分配内存。

谢谢!那么,是否有可能得到每个部分使用了多少内存?您可以使用探查器查看程序的哪些部分使用的内存和CPU最多。您可以尝试JDK附带的
visualvm
public static void main(String[] args) {
    byte[] b;
    for(int i=0;i<10;i++) {
        System.out.println(i);
        b = new byte[1024*1024*5];
    }
}