11
Июн
2021

Моя программа тормозит, потому что использует много тяжеловесных данных, а программа получает свободной памяти из озу только по 25мб

У меня есть программа написанная на java на андроиде. В этой программе запускается процедура main() в фоновом потоке, которая представляет из себя цикл в котором выделяется память под объекты некоторого массива (массив у меня большой!). Все работает хорошо, одна только проблема. Java выделяет для программы 25мб озу, если нужно еще, она еще выделяет 25мб и т.д., при этом, при выделении памяти, программа притормаживает на 2-3 сек. В скором времени, мои данные становятся увесистыми, и программе нужно много раз получить по 25 мб, из-за чего она надолго замирает(на много минут). Как мне установить в программу, чтоб она «хватала» памяти не по 25мб, а, скажем, по 100мб? Свободного озу у моего телефона 1гб. Код программы:

private void main () { 
Position[] Pos = new Position[10000000]; int z = 0; 
int xx = 1; 
while (xx <= 4000) { 
if (xx >= 3200) { setTextR(xx + "-" + Runtime.getRuntime().freeMemory() + " "); 
} 
int i = 1; 
while (i <= xx) { 
Position p = new Position(); 
p.questions = new NodeList(); 
p.vars = new LinkedList<Var>(); 
Pos[z] = p; 
i++; 
z++; 
} 
xx++; 
} 
} 

Источник: https://ru.stackoverflow.com/questions/1294047/%D0%9C%D0%BE%D1%8F-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0-%D1%82%D0%BE%D1%80%D0%BC%D0%BE%D0%B7%D0%B8%D1%82-%D0%BF%D0%BE%D1%82%D0%BE%D0%BC%D1%83-%D1%87%D1%82%D0%BE-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D0%B5%D1%82-%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE-%D1%82%D1%8F%D0%B6%D0%B5%D0%BB%D0%BE%D0%B2%D0%B5%D1%81%D0%BD%D1%8B%D1%85-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D0%B0-%D0%BF%D1%80%D0%BE%D0%B3%D1%80

Тебе может это понравится...

Добавить комментарий