Все началось с того, что программа стала падать при выделении памяти, поэтому стал разбираться и добавил в код логирование.
rows и cols равны по 84.
writeLog("total " + Runtime.getRuntime().totalMemory() + " max " + Runtime.getRuntime().maxMemory() + " free " + Runtime.getRuntime().freeMemory());<br/>
<br/>
costMatrix = new byte[rows][cols][rows][cols];<br/>
writeLog("costMatrix allocated");<br/>
<br/>
writeLog("total " + Runtime.getRuntime().totalMemory() + " max " + Runtime.getRuntime().maxMemory() + " free " + Runtime.getRuntime().freeMemory());<br/>
<br/>
directionMatrix = new Aim[rows][cols][rows][cols];<br/>
writeLog("directionMatrix allocated");<br/>
<br/>
Результат
total 16318464 max 259522560 free 15968416
costMatrix allocated
total 73519104 max 259522560 free 13535792
1. Во-первых очень странные цифры 16 против 73 Мбайт занятой памяти, но свободная практически не изменилась.
2. directionMatrix allocated не появляется в логе. Пробовал ловить исключение, но не ловится.
PS Добавлял опции -Xms2g -Xmx2g для виртуальной машины, но все равно не помогает.
Буду благодарен любой информации по теме. В Яве новичок.