Если вы хотите сохранить свой код без изменений и иметь достаточно свободного места на диске, вы можете просто добавить достаточно большую область подкачки в вашу ОС.
Если вам нужно 10 ГБ, вот как вы это делаете с UFS:
mkfile 10g /export/home/10g-swap
swap -a /export/home/10g-swap
echo "/export/home/10g-swap - - swap - no -" >> /etc/vfstab
Если вы используете ZFS, это будет:
zfs create -V 10gb rpool/swap1
swap -a /dev/zvol/dsk/rpool/swap1
Не беспокойтесь об этом большом свопе, это не повлияет на производительность, так как своп будет использоваться только для резервирования виртуальной памяти, а не для нумерации страниц.
В противном случае, как уже предлагалось в предыдущих ответах, один из способов избежать проблемы виртуальной памяти, с которой вы сталкиваетесь, - это использовать вспомогательную программу, то есть небольшую службу, с которой вы контактируете через сетевой сокет (или протокол более высокого уровня, такой как ssh) и он выполняет сценарий perl «удаленно».
Обратите внимание, что проблема не имеет ничего общего с 32-разрядной или 64-разрядной JVM, просто Solaris не перегружает память, и это сделано специально.