У меня есть блок кода, который в Android NDK выделяет огромные количества памяти. Последнее, что мне нужно, это использовать блок try-catch для возможности, возможно, NoMemoryError. Вы знаете, как записать его в собственный SDK?Android NDK - попробуйте поймать NoMemoryError
Мне нужно реализовать такую же функциональность, как это:
for(int i=1;i<50;i++){
try{
int[] mega =new int[i*1024*1024];//1MB
}catch (OutOfMemoryError e) {
usedMemory= (Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())/new Float(1048576.0);
usedText=usedMemory+" MB";
tw.setText(usedText);
break;
}
}
Ваш комментарий говорит о 1 МБ, но на самом деле он будет выделять 4 МБ на каждую итерацию. Проблема с этим кодом заключается в том, что Android выйдет из строя и сгорит, прежде чем вы получите исключение. Система будет пытаться отключить другие приложения и службы, чтобы освободить память, и в процессе Android будет очень медленным и в конечном итоге начнет ошибочно работать. Вместо того, чтобы подчеркивать такую систему, почему бы вам просто не запросить количество свободной памяти? – BitBank
Мне просто нужно это для практики NDK ... и я думаю, что нет способа воспроизвести эту функцию в NDK, что вы думаете? Кстати, это не важно, будь то 1 МБ или 4 МБ, я проверяю свободную память от времени выполнения – Waypoint