Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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堆空间不足_Java_Jar - Fatal编程技术网

Java堆空间不足

Java堆空间不足,java,jar,Java,Jar,在我的java程序中,我使用文本到语音来说出数字,在它说出大约150个数字后,它超出了堆空间(从JAR打开时),我也尝试增加堆空间,但问题仍然存在 我所做的一切: 使用批处理脚本: java -Xmx1024m -jar Super_Brain Academy.jar pause [Super\u Brain Academy.jar是文件名],但这仍然不能解决我的问题,因为它只增加了主jar文件的堆空间,而没有增加TTS(freeTTS)的堆空间 我也试着制作一个胖罐子,然后做这个,但问题是当

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

我所做的一切: 使用批处理脚本:

java -Xmx1024m -jar Super_Brain Academy.jar
pause
[
Super\u Brain Academy.jar
是文件名],但这仍然不能解决我的问题,因为它只增加了主jar文件的堆空间,而没有增加TTS(freeTTS)的堆空间

我也试着制作一个胖罐子,然后做这个,但问题是当我制作胖罐子时,TTS停止工作,我听不到任何东西。我试着用这种方法做这个胖罐子。我还试图用stackoverflow上给出的其他方法制作胖罐子,但它们很混乱,我无法理解。我是一个新手(到目前为止你可能已经明白了这一点),并且使用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);
}                                       
private void RandomjBActionPerformed(java.awt.event.ActionEvent evt){
//单击按钮时,它会根据条件生成一个随机数,并大声说出
声音;
voice=voiceManager.getVoice(VOICENAME);
voice.allocate();
//此处提供了一些变量声明和初始化以及set-visible命令(因该问题被删除为不可逆)
对于(g=0;g=0;){
ran=(int)(Math.random()*(c));//开始创建随机数
如果(ran>=c/10){
g=1;
//这里有一些逻辑陈述
}//如果结束
如果(g!=0){

如果(num根据您的评论,我认为这是内存管理的问题

我发现这个链接非常有用。你可以在任何地方使用它来制作你的程序块内存


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

Mya可能是因为您没有正确释放资源。显示代码将有助于在调整JVM选项(Xmx、Xms等)之前先尝试修复代码中的内存泄漏@Dibya哪段代码?build.xml?我建议您在visualVM中对应用程序进行内存分析,看看它为什么使用这么多内存。您可能有一个bug。@Emanuelsarigan您确定存在内存泄漏,因为默认情况下只有4或5 MB,我认为这对于tts来说是不够的……我也没有任何调试器来做(我使用的是netbeans)我相信您提供的链接没有任何用处,因为这正是我正在做的(通过批处理脚本,我给出了cmd args)但仍然存在问题,就内存管理而言……我一定会调查that@DakshShah:您必须有java代码才能完成某些任务,对吗?因为您从堆中得到了一个
java
错误!我的建议是优化您的java代码。增加堆大小并尝试一下。如果java代码没有释放正确地输入资源,那么你就不能从批处理文件中做很多事情了。哦,现在我明白了,很抱歉我误解了…我也会在问题中添加代码。