@ideas4ru

Проблемы с памятью в Java?

Все началось с того, что программа стала падать при выделении памяти, поэтому стал разбираться и добавил в код логирование.


rows и cols равны по 84.

writeLog(&quot;total &quot; + Runtime.getRuntime().totalMemory() + &quot; max &quot; + Runtime.getRuntime().maxMemory() + &quot; free &quot; + Runtime.getRuntime().freeMemory());<br/>
<br/>
costMatrix = new byte[rows][cols][rows][cols];<br/>
writeLog(&quot;costMatrix allocated&quot;);<br/>
<br/>
writeLog(&quot;total &quot; + Runtime.getRuntime().totalMemory() + &quot; max &quot; + Runtime.getRuntime().maxMemory() + &quot; free &quot; + Runtime.getRuntime().freeMemory());<br/>
<br/>
directionMatrix = new Aim[rows][cols][rows][cols];<br/>
writeLog(&quot;directionMatrix allocated&quot;);<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 для виртуальной машины, но все равно не помогает.


Буду благодарен любой информации по теме. В Яве новичок.
  • Вопрос задан
  • 3365 просмотров
Пригласить эксперта
Ответы на вопрос 2
@1nd1go
Есть такой тул jvisualvm, он лежит в $java_home$/bin.

Позволяет помониторить как именно выделяется память. Подробная инструкция к нему есть а сайте оракла, гуглится по visualvm.
Ответ написан
Комментировать
anmipo
@anmipo
1. Что собой представляет класс Aim? Если каждый экземпляр занимает больше ~40 байт, неудивительно, что массив на 84^4 элементов не помещается в 2 ГБ.
2. Какое исключение Вы пробовали ловить? OutOfMemoryException (которое бывает по разным причинам) не является потомком java.lang.Exception.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽