当前位置: 首页 > 面试题库 >

OutOfMemory时生成Java转储

徐峰
2023-03-14
问题内容

我有一个最终应该生成的程序OutOfMemory。程序代码为:

public class VeryLargeObject implements Serializable {
    public static final int SIZE = 1 << 12;

    public String tag;
    public int[][] bigOne = new int[SIZE][SIZE];

    {
        // Initialize bigOne
        for(int i = 0; i < SIZE ; ++i) {
            for(int j = 0; j < SIZE; ++j) {
                bigOne[i][j] = (int) (Math.random() * 100);
            }
        }
    }

    public VeryLargeObject(String tag) {
        this.tag = tag;
    }

    public static void main(String args[]) {
        VeryLargeObject[] vla = new VeryLargeObject[1 << 12];
        for(int i = 0; i < Integer.MAX_VALUE; ++i) {
            vla[i] = new VeryLargeObject("aa");
        }
    }
}

我使用以下参数运行程序:

java VeryLargeObject -Xms1024m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="D:\workspace"

程序因OutOfMemory失败,但未生成转储文件。 你知道为什么吗?

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at VeryLargeObject.<init>(VeryLargeObject.java:14)
        at VeryLargeObject.main(VeryLargeObject.java:32)

问题答案:

对于初学者,请删除XX选项以及 之前的 所有选项VeryLargeObject,否则,请将参数传递给Java程序而不是JVM



 类似资料:
  • 我用Netbeans用Java制作了一个应用程序,但当我想导出它(构建)时,会显示一条错误消息: C:\users\daly\documents\netbeansprojects\vachetaureau\nbproject\build-impl.xml:926:执行此行时出现以下错误:C:\users\daly\documents\netbeansprojects\vachetaureau\nb

  • 问题内容: 我正在尝试开发XML导出功能,以使我的应用程序用户可以XML格式导出其数据。我已经准备好了该功能并且可以正常工作,直到在某些情况下开始失败。然后我意识到是因为某些特殊字符需要编码。例如,数据可能包含&或!或%或’或#等。等等,需要正确地转义。我想知道是否有通用的实用程序可以按照XML规范转义所有特殊字符。我在Google上找不到任何东西。 已经有类似的东西了吗?或还有其他方法吗? 这是

  • 问题内容: 除了堆转储(java_pid14941.hprof),Java 6还会生成线程转储吗? 这就是我的一个应用程序发生的事情。 java.lang.OutOfMemoryError:超出了GC开销限制将堆倾倒到java_pid14941.hprof … 我确实在工作目录中找到了ava_pid14941.hprof,但没有找到任何包含线程转储的文件。当我收到此OutOfMemory错误时,我

  • 我是Java平台的新手。我已经用一本书学习Java一周了。现在我想测试如何转换Java文件jar文件。当我使用下面的命令时,我只是得到一个rar文件作为输出,即使rar文件没有一个jar文件。请帮帮我. 命令:jar-cfvm helloworld.jar manifest.mf myapp.class 输出:添加清单添加:MyApp.Class(输入=420)(输出=289)(压缩31%) 系统

  • 我在yarn cluster上运行的spark应用程序崩溃了,我正在试图确定根本原因。在我使用从yarn获得的日志中,我看到在块获取期间有一大堆连接被拒绝,还有一个内存不足错误。很难说出根本原因是什么。我的问题是当容器因为OutOfMemory异常而被杀死时会发生什么。因此,在容器日志中,我看到这是如何在容器上启动执行器的 我还看到许多。在应用程序崩溃之前,似乎有多个这样的问题。spark重试一个

  • 问题内容: 我想将Java中01/01/2100的UTC时间设置为‘2100-01-01 00:00:00’。我收到“ 2100-01-01 00:08:00”。任何想法,如何纠正这一点。 问题答案: 您还需要为SimpleDateFormat指定时区-当前正在解析 当地时间 午夜,该 时间 以UTC上午8点结束。 像以往一样,我个人建议使用Joda Time,它通常功能更强大。如果您愿意,我很乐