iOS - Использование памяти удваивается после представления ViewController из-за ImageIO_PNG_Data - PullRequest
0 голосов
/ 31 января 2019

РЕДАКТИРОВАТЬ : Теперь я нашел корень проблемы благодаря инструменту инструментов на Mac.enter image description here Когда я показываю ViewController, есть один экземпляр ImageIO, который занимает 242,7 МБ памяти.Я проверил, и это точно соответствует массивному прыжку.Я не смог найти, что это за изображение, так как у меня нет изображения такого размера или где-либо рядом с этим размером в проекте.Кто-нибудь есть идеи, как я могу определить проблему дальше?

Я пытаюсь отладить использование памяти моего приложения iOS.Вот текущий сценарий: - использование памяти после запуска составляет около 250 МБ; - когда я открываю один конкретный ViewController, объем памяти увеличивается до 580 МБ. Это действие вызывает значительное отставание в приложении, т. Е. Для представления ViewController требуется заметный момент.

Сейчас я пытаюсь использовать инструменты профилирования памяти XCode, чтобы выяснить, что занимает так много памяти.Я обнаружил пару странных вещей: - при проверке иерархии графа памяти у меня изначально есть 224 объекта - когда я запускаю ViewController, получается до 227 объектов (только 3 объекта, которые являются самим ViewController, один CustomScrollViewи еще один объект Google Analytics) - когда я отклоняю представление, количество объектов возвращается к 224, но использование памяти уменьшается только до 550 МБ (поэтому некоторая память протекает, но я не вижу, где она находится).

Когда я заново открываю другой экземпляр того же проблемного ViewController после этого, задержки не возникает, и она открывается мгновенно.

Есть ли что-то, чего я здесь не хватает, что могло бы объяснить эту странную памятьколебания?Большое вам спасибо.

РЕДАКТИРОВАТЬ : Вот как я представляю ViewController:

            UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"AutoLayoutStoryboard" bundle:nil];
        ShowViewController *sfvc = [storyboard instantiateViewControllerWithIdentifier:@"ShowView"];
        sfvc.idEvent = idEvenement;
        sfvc.usesGivenData = TRUE;
        sfvc.event = (I_Event *)[[self getCorrectArrayForSection:indexPath.section] objectAtIndex:indexPath.row];
        [self.navigationController pushViewController:sfvc animated:YES];
        [tableView deselectRowAtIndexPath:indexPath animated:YES];

Это журнал, который появляется, когда я представляю ViewController:

2019-01-31 11:23:12.838140-0500 app[52956:9348407] [INFO] {}[General]: GPU Identifier: Apple Software Renderer
2019-01-31 11:23:14.692535-0500 app[52956:9349579] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C21.1:2][0x7fd6f1804a10] get output frames failed, state 8196
2019-01-31 11:23:14.692879-0500 app[52956:9349579] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C21.1:2][0x7fd6f1804a10] get output frames failed, state 8196
2019-01-31 11:23:14.693309-0500 app[52956:9349579] TIC Read Status [21:0x0]: 1:57
2019-01-31 11:23:14.693536-0500 app[52956:9349579] TIC Read Status [21:0x0]: 1:57
2019-01-31 11:23:14.695037-0500 app[52956:9349579] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C20.1:2][0x7fd6f0e37780] get output frames failed, state 8196
2019-01-31 11:23:14.695215-0500 app[52956:9349579] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C20.1:2][0x7fd6f0e37780] get output frames failed, state 8196
2019-01-31 11:23:14.695574-0500 app[52956:9349579] TIC Read Status [20:0x0]: 1:57
2019-01-31 11:23:14.695670-0500 app[52956:9349579] TIC Read Status [20:0x0]: 1:57
2019-01-31 11:23:14.912936-0500 app[52956:9349564] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C25.1:2][0x7fd6ee5d8710] get output frames failed, state 8196
2019-01-31 11:23:14.913128-0500 app[52956:9349564] [BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C25.1:2][0x7fd6ee5d8710] get output frames failed, state 8196
2019-01-31 11:23:14.913838-0500 app[52956:9349564] TIC Read Status [25:0x0]: 1:57
2019-01-31 11:23:14.914180-0500 app[52956:9349564] TIC Read Status [25:0x0]: 1:57

И некоторая дополнительная информация: я попытался завершить комментирование ВСЕГО кода в файле ViewController.m, и объем памяти все еще увеличивается.ViewController - это сложное / сложное представление в Storyboard с большим ScrollView, но может ли оно само по себе объяснить такой скачок в использовании памяти?

Так выглядит профилировщик.Большой удар, который вы видите на синем графике сверху, - это когда я открываю определенный ViewController.Кажется, что использование памяти Anonymous VM полностью вышло из-под контроля, и ImageIO_PNG_Data.Могу ли я что-нибудь сделать на этой стороне?enter image description here

...