在我的Java程序中,我正在使用文本转语音来朗读数字,当它朗读了大约150个数字后,就会用尽堆空间(从JAR打开时)。我已经尝试增加堆空间,但问题仍然存在。
我尝试过的所有方法:
使用批处理脚本:
java -Xmx1024m -jar Super_Brain Academy.jar
pause
Super_Brain Academy.jar
是文件名,但这仍然不能解决我的问题,因为它只增加了主JAR文件的堆空间,而没有增加TTS(freeTTS)的堆空间。我尝试过制作fat Jar并执行此操作,但问题是当我制作fat JAR时,TTS停止工作,我无法听到任何声音。我尝试使用此方法制作fat JAR。我还尝试从stackoverflow提供的其他方法中制作fat 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 代码,请访问此链接