Java出堆空间

时间:2014-05-29 08:54:15

标签: java jar

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

我尝试了什么:

使用批处理脚本:

java -Xmx1024m -jar Super_Brain Academy.jar
pause

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

我也尝试制作一个胖胖的Jar然后这样做,但问题是当我制作胖JAR时TTS停止工作而我无法听任何东西。我试图通过this方法制作胖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的完整代码,请检查this

1 个答案:

答案 0 :(得分:0)

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

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

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