У вас может быть утечка ресурсов, в этом случае что-либо, кроме обнаружения и устранения утечки, только задержит ошибку, но не предотвратит ее. jhat & -XX:+HeapDumpOnOutOfMemoryError
позволит вам проверять объекты в куче во время OOM, что является хорошим началом для выяснения, есть ли у вас утечка и где ваша утечка.
Что касается run.bat, перечисленные вами параметры могут работать не так, как вы предполагали. Я бы точно указал суффикс «m» egabyte (килобайт? Гигабайт? Mb, скорее всего, здесь), и установил максимальный размер перед исходным размером. Итак, -Xmx1024m -Xms1024m -XX:MaxPermSize=512M
.
512 мегабайт, кстати, большой размер для постоянного поколения. Может ты имел ввиду кб? Вы можете либо использовать jstat , либо добавить -XX: -PrintGCDetails в свой файл run.bat, чтобы увидеть, сколько фактически используется пространства постоянной генерации.