繁体   English   中英

Java出堆空间

[英]Java Out of Heap Space

在我的java程序中,我使用文本到语音来说出数字,在它说出大约150个数字后,它从堆空间中消失(从JAR打开时)我确实尝试增加堆空间但仍然问题仍然存在。

我尝试了什么:

使用批处理脚本:

java -Xmx1024m -jar Super_Brain Academy.jar
pause

[ Super_Brain Academy.jar是文件名],但这仍然无法解决我的问题,因为它只增加了主JAR文件而不是TTS(freeTTS)的堆空间。

我也尝试制作一个胖胖的Jar然后这样做,但问题是当我制作胖JAR时TTS停止工作而我无法听任何东西。 我试图通过这种方法制作胖JAR。 我还尝试从stackoverflow上给出的其他方法制作胖JAR,但是它们让我感到困惑,我无法理解它们。 我是一个新手(你可能已经想到了,直到现在)并使用Netbeans 8。

根据我的知识,我认为错误必须来自这个代码块,它位于一个单独的java文件中:

   private static final String VOICENAME = "kevin16";

   VoiceManager voiceManager = VoiceManager.getInstance();

//这里有些代码..........

private void RandomjBActionPerformed(java.awt.event.ActionEvent evt) {                                         
//When the button is clicked it generates one random number according to the conditions and speaks it up
    Voice voice;
    voice = voiceManager.getVoice(VOICENAME);
    voice.allocate();

    //Some variable declarations and initializations along with set visible commmands were here(removed as irrevelant for the problem)

    for (g = 0; g==0;) {
        ran = (int) (Math.random() * (c)); // Random Number Creation Starts
      if(ran>=c/10){

           g = 1;
           //Some logic statements here

      }//IF ENDS  
      if(g!=0){
          if(num<0){
              num = num * (-1); // MAKING NUM ALWAYS +ve
          }
      }//if(g!-0) ends here  
    }//for loop ends
    d = d+ran;
    t4.setText("" + ran);
    voice.speak(t4.getText());
    listenanum.setText("" + d);
    listenanum.setVisible(false);
}                                       

一次又一次地点击这个randomjB ,这就是问题发生的时候。 (我从上面的代码中删除了很多行,所以它对你来说实际上没有意义......但我只剩下那些我觉得很重要的行)

对于randomjB的完整代码,请检查此项

根据你的评论,我认为这是内存管理的一个问题。

我发现链接非常有用。 您可以在适用的任何地方使用相同的方法来阻止程序阻塞内存。

在优化aslo之后,如果您收到相同的错误消息,则可以通过链接了解如何增加堆大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM