【问题标题】:Java error "main" java.lang.OutOfMemoryError: Java heap space [duplicate]Java错误“main”java.lang.OutOfMemoryError:Java堆空间[重复]
【发布时间】:2018-04-09 17:42:11
【问题描述】:

所以我在 java 中编写了以下主要函数来计算 1000 个随机生成的长度为 10、20、50 和 100 对的 editdistancee。对于长度 10 n 20 它运行良好,但对于长度 50,它给出了这个错误. “线程“主”java.lang.OutOfMemoryError 中的异常:Java 堆空间”。我很困惑该怎么办。任何帮助将不胜感激。

for (j=0; j< numoftimes; j++) {
            for (int i = 0; i < len2; i++) {
                s5r += (char) ( 'a' + r.nextInt(26));
                s6r += (char) ( 'a' + r.nextInt(26));
            }
            starttime2 = System.nanoTime();
            int distance2 = editDistance(s5r,s6r); 
            endtime2 = System.nanoTime() - starttime2; 
            }

            avg_CPUtime2 = (endtime2/numoftimes);
            System.out.println("Average CPU time in nanoseconds for 1000 
               pair of random words of length "+len2+" : "+avg_CPUtime2);


            int len3 = 100;
            long starttime3 = 0;
            long endtime3 = 0;
            long avg_CPUtime3 = 0;
            String s7r = "";
            String s8r = "";
            for (j=0; j< numoftimes; j++) {
            for (int i = 0; i < len3; i++) {
                s7r += (char) ( 'a' + r.nextInt(26));
                s8r += (char) ( 'a' + r.nextInt(26));
            }
            starttime3 = System.nanoTime();
            int distance3 = editDistance(s7r,s8r); 
            endtime3 = System.nanoTime() - starttime3; 
            }

            avg_CPUtime3 = (endtime3/numoftimes);
            System.out.println("Average CPU time in nanoseconds for 1000 
              pair of random words of length "+len3+" : "+avg_CPUtime3);

结果是这样的

Average CPU time in nanoseconds for 1000 pair of random words of length 10 : 
 674163
  Average CPU time in nanoseconds for 1000 pair of random words of length 20 
     : 3128792
   Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at algorithmDesign.Sequences.editDistance(Sequences.java:12)
 at algorithmDesign.Sequences.main(Sequences.java:116)

【问题讨论】:

  • 我的猜测是editDistance 的实现很差,但是没有看到该方法背后的代码,很难知道如何帮助您。

标签: java edit-distance


【解决方案1】:

你必须增加java堆空间

在运行->运行配置中找到你已经运行的类的名称,选择它,点击参数选项卡然后添加:

-Xms512M -Xmx1024M

到 VM 参数部分

【讨论】:

  • 已经有一个副本
  • 我已经增加到 -Xmx4000m。我不知道这是对还是错。但它仍然无法正常工作。 P.S:我是 java 和 eclipse 的新手
  • 它会让你的电脑速度变慢。这是我们正在谈论的内存空间,请先阅读一下。
  • 当然。我要读书。谢谢顺便说一句
  • 欢迎您确保排除答案,如果它对您有用
猜你喜欢
  • 2020-09-25
  • 1970-01-01
  • 2014-12-02
  • 2016-01-19
  • 2013-08-22
  • 2018-12-07
  • 2015-07-13
  • 1970-01-01
  • 2016-04-10
相关资源
最近更新 更多