![]() |
eXeL@B —› Вопросы новичков —› Цикл очистки памяти в Dll библиотеке |
Посл.ответ | Сообщение |
|
Создано: 03 февраля 2014 22:07 · Поправил: UkrainianBoy96 · Личное сообщение · #1 Здравствуйте! Недавно вышла GTA SA на WP8, она отлично работает на устройствах с 1 гб оперативки. Но также запускается и на 512 ОЗУ только проблема в том что после 1 мин игры происходит вылет. После недолгих опытов, попробовали сжать текстуры, и это помогло, продлило время игры на 5-7 минут. Сразу стало понятно что это происходит потому что памяти достигает максимального значения, а очистка не происходит. Начали декомпилировать библиотеки и искать причину но нечего толкового не нашли. Вот три библиотеки Zlib.Portable.dll WP8Comp.dll GTASA.dll В библиотеке GTASA.dl: нашел такой код: private Dictionary<string, wp8Image> imageCache; private Dictionary<string, wp8Image>] imageCache1; private const int MAX_IMAGE_FILES = 0x40; - это размер 64 private const int MAX_RESOURCE_FILES = 0x40; - это размер 64 private static ResourceFactoryImpl me; и два цикла: public int generateImageHandle(Size size) { int num = this.getNextImageGenHandle(); wp8Image image = new wp8Image(new RectangleShape(0.0, 0.0, size.get_Width(), size.get_Height()), "", new Point(0.0, 0.0), size); string str = num.ToString(); this.imageCache1[0x3f][str] = image; return num; } ---------------------------------------------------------------------------------------------------------------------- me = this; for (int i = 0; i < 0x40; i++) { this.imageCache1[i] = new Dictionary<string, wp8Image>(); } } Изменения в них значений [0x3f] и 0x40 не помогло, либо я не знаю на какое нужно, но я его и понижал и повышал. Библиотека Zlib.Portable.dll я так понял отвечает за распаковку кэша игры, там есть такие интересные значения: return this._bufferSize; } set { if (value < 0x400) { throw new ArgumentOutOfRangeException("BufferSize", "BufferSize must be greater than 1024 bytes]"); } this._bufferSize = value; Что это за цикл я не понял? Так как менял значения 0x400 на 0x200 и 0x70 и ничего не помогло. На счет WP8Comp.dll она не открывается обычным компилятором, только IDA но там не понятный для меня язык, так как библиотека управляет всем процессом игры) ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Цикл очистки памяти в Dll библиотеке |