Когда вы говорите, что уже увеличили кучу «столько, сколько можете», можете ли вы быть более конкретным? 1g? 2g? Кроме того, почему бы вам не запустить процесс Java с:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="my_dump.out"
и просмотрите дамп кучи в таком инструменте, как HPjmeter , чтобы увидеть, что хранится в памяти? В противном случае ваш вид работы в темноте. Вы также можете указать, работаете ли вы с 32-разрядной или 64-разрядной JVM?