Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Windows Phone

Войти
Регистрация
Восстановить пароль
 
vladyxa96
1 / 1 / 0
Регистрация: 02.07.2013
Сообщений: 37
#1

Цикл очистки памяти в Dll библиотеке - Windows Phone

03.02.2014, 21:17. Просмотров 680. Ответов 0
Метки нет (Все метки)

Здравствуйте! Недавно вышла GTA SA на WP8, она отлично работает на устройствах с 1 гб оперативки. Но также запускается и на 512 ОЗУ только проблема в том что после 1 мин игры происходит вылет. После недолгих опытов, попробовали сжать текстуры, и это помогло, продлило время игры на 5-7 минут. Сразу стало понятно что это происходит потому что памяти достигает максимального значения, а очистка не происходит. Начали декомпилировать библиотеки и искать причину но нечего толкового не нашли.
Вот три библиотеки GTA.zip которые есть в игре:
Zlib.Portable.dll
WP8Comp.dll
GTASA.dll


В библиотеке GTASA.dl: нашел такой код:
Visual Basic
1
2
3
4
5
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;
и два цикла
Visual Basic
1
2
3
4
5
6
7
8
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;
}
Visual Basic
1
2
3
4
5
6
me = this; 
 
for (int i = 0; i < 0x40; i++) 
{ this.imageCache1[i] = new Dictionary<string, wp8Image>();
 } 
}
Изменения в них значений [0x3f] и 0x40 не помогло, либо я не знаю на какое нужно, но я его и понижал и повышал.

Библиотека Zlib.Portable.dll я так понял отвечает за распаковку кэша игры, там есть такие интересные значения:
Visual Basic
1
2
3
4
5
6
7
8
9
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 но там не понятный для меня язык, так как библиотека управляет всем процессом игры)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.02.2014, 21:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Цикл очистки памяти в Dll библиотеке (Windows Phone):

.NET 4.x Где найти цикл очистки памяти в Dll библиотеке - C#
Здравствуйте! Недавно вышла GTA SA на WP8, она отлично работает на устройствах с 1 гб оперативки. Но также запускается и на 512 ОЗУ только...

Точка входа в процедуру _dbk_fcall_wraper не найдена в библиотеке DLL BORLNDMM.DLL - C++ Builder
При попытке скомпилировать файл выдает такую ошибку Точка входа в процедуру _dbk_fcall_wraper не найдена в библиотеке DLL BORLNDMM.DLL

Точка входа в процедуру InitializeConditionVariable не найдена в библиотеке DLL KERNEL32.dll - C++ WinAPI
Добрый день, товарищи! Помогите, пожалуйста, советом в решении следующией проблемы: Пытаюсь скомпилировать программу для дальнейшего...

Точка входа в процедуру RegGetValueA не найдена в библиотеке DLL ADVAP132.dll - Windows XP
Сообщение: Точка входа в процедуру RegGetValueA не найдена в библиотеке DLL ADVAP132.dll стало появляться при старте Windows XP. ...

Точка входа в процедуру SMaplS_IP_EBP_12 не найдена в библиотеке DLL KERNEL 32 dll - Игры
при запуске игрули появлялось окно не найден файл xlive.dll...нашел в нэте..скачал..теперь появляется окно с надписью &quot;Точка входа в...

Точка входа в процедуру _CxxFrameHandler 3 не найдена в библиотеке DLL msvcrt.dll - Windows XP
вылезла такая ошибка, windows xp&quot;точка входа в процедуру _CxxFrameHandler 3 не найдена в библиотеке DLL msvcrt.dll&quot;, замена этого длл не...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2014, 21:17
Привет! Вот еще темы с ответами:

Точка входа в процедуру InitializeCriticalSectionEx не найдена в библиотеке DLL KERNEL32.dll - Windows XP
Здравствуйте, коллеги! Случилась такая вещь. Малолетний внук что-то нажимал на клаве, выключил компьютер. Сейчас при запуске выходит...

Точка входа в процедуру SymSetWithAddr64 не найдена в библиотеке DLL DBGHELP.dll - Windows XP
У МЕНЯ WINDOWS XP SP3. Когда включаю компьютер, после Приветствие появится вот это уведомления. Точка входа в процедуру...

Точка входа в процедуру RegDeleteKeyExA не найдена в библиотеке DLL ADVAPI32.dll - Windows XP
Уважаемые форумчане. При попытке установить Java Development Kit 8 Точка входа в процедуру RegDeleteKeyExA не найдена в библиотеке DLL...

Точка входа в процедуру decodepointer не найдена в библиотеке DLL KERNEL32.dll - Windows XP
Ээ.... Здравствуйте есть такая проблема привожу на примере установки LoL. начинаю инсталить выскакивает табличка см.рис. Что делать, как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru