По умолчанию JVM использует ограниченное пространство "кучи". Предел является зависящей от реализации JVM, и не ясно, какую JVM Вы используете. На ОС кроме Windows 32-разрядной JVM Sun на машине с 2 Гбитами или больше будет использовать максимальный размер "кучи" по умолчанию 1/4 физической памяти, или 512 Мбит в Вашем случае. Однако значение по умолчанию для "клиентского" режима JVM является максимальным размером "кучи" на только 64 Мбита, который может быть тем, с чем Вы столкнулись. JVM другого поставщика может выбрать различные значения по умолчанию.
, Конечно, можно определить предел "кучи" явно с -Xmx
опция к java
, где
число мегабайтов для "кучи".
Как приблизительный подсчет, Ваша хэш-таблица должна только использовать приблизительно 16 Мбит, таким образом, должны быть некоторые другие большие объекты на "куче". Если бы Вы могли бы использовать Comparable
, вводят TreeMap
, который сохранил бы некоторую память.
См. "Эргономика в 5,0 JVM" для получения дополнительной информации.
в случае, если кто-либо все еще находит это трудным
Фрагмент кода
textToSpeech=new TextToSpeech(this, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int status) {
if (status==TextToSpeech.SUCCESS){
int result=textToSpeech.setLanguage(Locale.ENGLISH);
if (result==TextToSpeech.LANG_MISSING_DATA||result==TextToSpeech.LANG_NOT_SUPPORTED){
Log.i("TextToSpeech","Language Not Supported");
}
textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String utteranceId) {
Log.i("TextToSpeech","On Start");
}
@Override
public void onDone(String utteranceId) {
Log.i("TextToSpeech","On Done");
}
@Override
public void onError(String utteranceId) {
Log.i("TextToSpeech","On Error");
}
});
}else {
Log.i("TextToSpeech","Initialization Failed");
}
}
});
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
textToSpeech.speak(text,TextToSpeech.QUEUE_FLUSH,null,TextToSpeech.ACTION_TTS_QUEUE_PROCESSING_COMPLETED);
}