Перейти к содержанию
Fire Monkey от А до Я

Поиск сообщества

Показаны результаты для 'памяти'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


StackOverflow


Защита от ботов


Город


Интересы

  1. Ссылка: http://delphifmandroid.blogspot.ru/2017/03/android-studio.html Автор: Ефимов Андрей Описание:
  2. Пример, взятый из Интернета: // clears the canvas Image1.Bitmap.Clear(TAlphaColors.White); // loads the bitmap using the TOpenDialog. if OpenDialog1.Execute then MyBitmap := TBitmap.CreateFromFile(OpenDialog1.Files[0]); // set the MyRect coordinates MyRect := TRectF.Create(50, 30, 150, 200); Image1.Bitmap.Canvas.BeginScene; // draws on the rectangle specified by MyRect the area from MyBitmap specified by MyRect Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20); Image1.Bitmap.Canvas.EndScene; Если мы, допустим, раз в секунду повторяем эту процедуру, постоянно загружая в Image1 новый MyBitmap, то нужно ли делать MyBitmap.Free или очистка памяти происходит сама?
  3. {$IFNDEF AUTOREFCOUNT} TTest = IInterface; {$ELSE} TTest = TInterfacedObject; {$ENDIF} ////////// var Obj: TTest; begin Obj:= TInterfacedObject.Create; //тут объект разрушается end; Это необходимо, для "магии", заключающейся при обязательном разрушении объекта в любом случае при выходе из функции (штатно, exit, ошибка, и.т.д.). Она работает. Но, вопрос в том - будет ли утечка памяти или что-то подобное? Заранее спасибо!
  4. TrueCrypt

    Утечка памяти в чартах

    Привет, при вызове метода ASeries.AddXY (пример: ASeries.AddXY(ASeries.MaxXValue + 1, AValue);) происходит утечка памяти, при том довольно сильная. Есть ли какая-то возможность устранить такой недочет. Исходник чарта закрытый, найти перврпричину не удается.
  5. dmitry

    Поиск утечек памяти

    Добрый день. Поделитесь информацией, кто как отлавливает утечки памяти в приложении для Android? ReportMemoryLeaksOnShutDown, при выходе из приложения не показывает утечек.
  6. Привет друзья! Помогите разобраться со сложившийся проблемой. К компоненту TImage применил эффект BlurEffect. После чего происходит циклическая смена изображений в TImage. И было замечено колоссальная утечка памяти. Без эффекта, утечки не наблюдается. Возможно при каждой смене изображения нужно вручную очищать кэш? Платформа Android
  7. Где то видел о такой возможности (слежка за утечкой памяти) Embarcadero. Как это делается не знаю. Научите если знаете... Если для Delphi и C++ отдельно, то интересует только C++...
  8. Доброе время суток. Можно ли как-то узнать есть ли утечки памяти в приложении под Android? Или получить размер занятой памяти приложением?
  9. Доброе время суток. Как можно реализовать подобное на андроид платформе? var MainHandle: THandle; begin if Win32Platform = VER_PLATFORM_WIN32_NT then begin MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID); SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1)); CloseHandle(MainHandle); end; end;
  10. Большое количество - это сколько? 100, 100 000, 100 000 000? Каждый раз увеличивая размер на один элемент, менеджер памяти ищет непрерывный незанятый кусок памяти такой длины, чтобы уместить все элементы. Хорошо если место под уже выделенный массив позволяет увеличить размер, не упираясь в участики памяти занятые другими данными. Иногда после очередного увеличения массива, уже выделенного участка памяти более не хватает. В таком случае менеджеру приходится искать новый, и копировать старые данные в новый участок памяти, а старый участок помечать как свободный. Разумеется это занимает время. Именно это и приводит к "не так быстро, как хотелось бы". Чтобы избежать этого: 1 Способ курильщика, простой: Увеличиваем размер массива не на 1 элемент, а сразу на 16/32/128/1024 элемента (вам виднее, в зависимости от того сколько у вас может быть элементов в массиве). Также заводим счетчик - номер последнего занятого элемента в массиве, и после каждого добавления - увеличиваем этот счетчик на единицу. Этот способ не избавит от проблемы, но будет приводить к менее частому перераспределению памяти. 2 Способ здорового человека, чуть сложнее: используйте указатели. Заведите массив указателей (либо TList), выделяйте место под каждую новую запись (ваш record) вручную, и помещайте указатель на него в ваш массив указателей (или в TList). Не забывайте освобождать выделенную память, когда ваши обьекты больше не нужны. Этот спобоб более правильный, так как в этом случае перераспределение происходит очень редко. Кстати, реализация TList использует внутри себя первый способ.
  11. Добрый день. В версии Delphi 10 Seattle обнаружил утечку памяти в проекте NotificationsProject из стандартных примеров. Воспроизводится она легко: 1) при создании формы, вставляем ReportMemoryLeaksOnShutDown := True; 2) Жмем на кнопку Show. Уведомление появляется в Windows 10. 3) Закрываем проект и видим что есть не уничтоженные объекты TNotification; Ярослав, как эту проблему можно исправить?
  12. Добрый день. В продолжение моей темы "Утечка памяти в компоненте TNotificationCenter" http://fire-monkey.ru/topic/1825-utechka-pamiati-v-komponente-tnotificationcenter/#entry9604, хотел бы узнать, каким образом можно оформить этот баг на сайт Embarcadero для его исправления?
  13. Ссылка: http://delphifmandroid.blogspot.ru/2014/10/android-44.html Автор: Андрей Ефимов Описание: Статья о работе с SD картой в Android 4.4 и выше.
  14. Есть некая анимация, на неё наложен эффект Glow + FloatAnimation, всё крутится в цикле, но через некоторое время начинает лагать. Чем больше эффектов тем лаги приходят быстрее. Если один Glow, например, то динамика потребления довольно медленная, но плавно пилообразно поджирает ресурсы, и через пол часа уже начинаются лаги. В чём проблема, господа?
  15. Коллеги, не могу разобраться с освобождением памяти объектов интерфейсного типа. Вот есть у меня переменная: var surveyList : IList<TSurvey>; То есть это список простеньких объектов. Предположим, TSurvey - класс, содержащий два поля: Id и Name. Есть функция которая заполняет этот список, например, из базы данных: function GetList () : IList<TSurvey> var list : IList<TSurvey>; i : Integer; item : TSurvey; begin list := TCollections.CreateList<TSurvey>; for i := 0 to 10 do begin item := TSurvey.Create (); item.Id := берем_например_из_БД item.Name := берем_например_из_БД list.Add ( item ); end; Result := list; end; И дальше необходимо в течении жизни программы обновлять этот список, то есть вызывать эту функцию. surveyList := GetList (); Так вот, при каждом вызове функции выделяется определенная память, например, 5 Мб. И каждый раз при вызове этой функции общий объем оперативной памяти увеличивается на 5 Мб (это видно из Диспетчера задач). Но ведь память интерфейсного объекта освобождается при величине счетчика ссылок равной 0. Почему тогда идет увеличение? Пытался и так сделать: if Assigned ( surveyList ) then begin surveyList.Clear (); surveyList := nil; end; surveyList := GetList (); Но это не помогает. Как правильно освободить память?
  16. вот программа выключилась. что стало с деревом? рассосалось? дерево - тем более нужен класс, хранящий ссылку на детей, скорее всего того же класса TYourClassList все же просто как мычание. умножаете количество элементов на 8 байт, получаете примерный размер массива указателей на объекты плюс к этому прикидываете размер самих объектов, и получаете количество памяти для хранения вашей структуры. ООООчень грубо, но пойдет..
  17. тогда, думаю, вам нужно просто хранить все это богатство в какой-то (локальной?) БД смысла держать это все в памяти вы никакого не обозначили. если нужно что-то найти, достать, обычная схема работы с моделью данных, сам список моделей обычно хранится в TYourClassList = TObjectList<TYourClass> при необходимости загружаем туда, работаем, выгружаем оттуда при этом выгрузка/загрузка становится независимой от хранения - хоть из интернета скачивайте
  18. а есть какие-то подробности? для чего этот список? и что значит "большой" ? 10 тыс и 10 млн оба немаленькие, но есть нюанс опять же, есть ли необходимость искать элементы в нем? или нужно ли чтобы они были упорядочены? это все важно есть также сомнение, что действительно нужен одномоментно в памяти *действительно* большой кусок данных
  19. Добрый день уважаемые эксперты. Помогите разобраться с функцией TThread.ForceQueue Пришлось внедрить ее как костыль в IOS для показа модальных форм, и получаем кучу ошибок на очистке памяти. Подскажите кто и как правильно ее использует в работе. Ниже рабочий код который гарантированно приведет к ошибке и у нас таких более 100 мест в проекте. FFrom := TFrom.Create(nil); TThread.ForceQueue(nil, procedure begin FFrom.ShowModal(procedure(Res: TModalResult) begin FreeForm(FFrom); //--> и тут получаем кучу ошибок - как правило на Form.Hide почемуто end); end);
  20. Это я этот пример выложил более года назад. Пример проверяет вашу конфигурацию на наличие разл. GPU (выдаёт их списком), инициализирует всё что необходимо на видео-акселераторе, создаёт массивы памяти на GPU, закачивает в них исходные данные из памяти CPU. Главное не забудьте, что рядом с файлом *.exe должны лежать текстовые файлы *.cpp (они при запуске передаются видеодрайверу на компиляцию). Если в них - в коде для GPU (Kernel, текстовом файле) на языке C99 есть ошибки - они будут показаны в "чёрном" окне. Потом выполняются в цикле несложные, но длительные операции. Причём это делается и на GPU (с контролем времени), и на CPU: чтобы убедиться в корректности вычислений. Папка со словом Slow в названии - это пример использования Atomic-функций (например, если надо найти среднее по большому массиву данных). В своих научных программах Atomic-функции стараюсь избегать: замедляют расчёты, "фирменные" atomic работают только с целыми. Использую вместо них barrier. Месяца 3 назад NVIDIA наконец-то начала переход со стандарта OpenCL1.2 на 2.0. Жаль, что такие интересные возможности OpenCL 2.0, как Pipes (трубы для обмена данными между модулями) NVIDIA (как и их любимая CUDA) пока не поддерживают... Только AMD даёт полноценную поддержку OpenCL 2.0 (только при размере видеопамяти более 2Gb!), а NVIDIA полностью совместима только с версией 1.2. В общем, будут вопросы - пишите: работаю только в связке Delphi/OpenCL уже давно. Кстати, в среде RAD Studio очень удобно редактировать одновременно и код Delphi-pascal, и C-код для OpenCL. ===== Дополню (конец декабря 2017). Внутри той же ссылки для скачивания добавил папку: OpenCL_Demo2017 Barrier and Local_Memory REDUCT В ней новый пример под Delphi XE8 64bit (работает и при компиляции в Delphi под Win32, но с ограничениями, о которых будет сказано ниже). Отличия: Добавлен пример простейшей редукции с использованием barrier и LocalMemory с обилием комментариев внутри Kernel-файла ProgramGPU1.cpp Показано, как внутри Kernel создать а-ля динамический массив (стандарт языка OpenCL 1.2 этого не позволяет). Главное. На форме добавлены Gauge-компоненты, показывающие: общую загрузку CPU ; загрузку CPU данной задачей ; загрузку GPU (общую); загрузку контроллера памяти GPU ; проценты использованной памяти GPU ; температуру GPU (в текстовом виде). Для определения загрузки GPU используется nvml.dll (мануал 2017), так что последние 4 параметра определяются только для карт NVIDIA, и при компиляции в Delphi под 64bit. Эта динамич. библиотека для каждой карты NVIDIA - своя, обычно при установке драйвера карты она попадает в папку C:\Program Files\NVIDIA Corporation\NVSMI\nvml.dll (этот путь прямо прописан в прилагаемом примере по ссылке). Всё что связано с определением загрузки CPU-GPU находится в отдельном модуле ProcessorUsage.pas, который может быть применён и для других программ (без OpenCL). Если есть желание попробовать OpenCL не только на видеокартах, но и на процессорах INTEL, надо поставить драйвер Ещё раз напоминаю, что при запуске *.exe рядом с ним должны лежать два текстовых файла *.cpp - они будут отправлены на компиляцию драйверу видеокарты! Буду весьма признателен, если кто-то подскажет способ измерения загрузки памяти GPU от AMD (загрузку GPU, его температуру, скорость FAN и т.д. уже знаю, как программно определить и для AMD тоже: использую atiadlxx.dll . Есть похожая DLL или иной способ определения свободной/использованной памяти именно для AMD? Всех с наступающим Новым годом!!
  21. Перепробывал обе версии с кейгеном и триал ключом. на WIN 7, 8, 10. Результат одинаково стабильный. Ситуация следующая. загружаю проект IDE показывает такую картинку - 01 все нормально и все видно. после F9 показывает картинку - 02 тока приложение - экран отадки пуст. закрываем приложение - картинка - 03 видно только структуру и инспектор обьектов. техника - кастрированый системмник - ноутбук. CPU - i5, mem - 8G, Video -gtx740m. вопрос это так задумано разработчиками в целях повышения умственных способностей и памяти. или я чтото не так инсталю.
  22. Добрый день, Друзья! Помогите, пожалуйста, разобраться - в голове уже каша Как в Delphi можно реализовать обработку поступающих на устройство PUSH-уведомлений при выгруженном или свернутом приложении? При запущеном и активном приложении проблем нет - использую OnReceiveNotificationEvent(Sender: TObject; const ANotification: TPushServiceNotification) в связке с TNotificationCenter. Эта процедура у меня: 1. очищает все активные уведомления; 2. создает в TNotificationCenter последнее пришедшее, которое и отображается пользователю. Его обработчик мной реализован. "Проблемы" есть если приложение выгружено или свернуто... Есть 2 очень похожих сценария: Сценарий №1: Приложение выгружено из памяти. Приходит PUSH. Пользователь нажимает на него. Приложение запускается. OnReceiveNotificationEvent после запуска не отрабатывает. Как обработать событие - не знаю Сценарий №2: Приложение запущено, но свернуто. Приходит PUSH. Пользователь нажимает на него. Приложение становится активным. После этого отрабатывает OnReceiveNotificationEvent: очищаются уведомления и создается новое. Пользователю надо повторно на него нажать и тогда сработает обработчик. Вопрос: Как получить текст (или любое другое поле - не важно) ЭТОГО push-уведомления после запуска/вывода приложения из фона? Допущение: Если ЭТО уведомление (запустившее приложение) идентифицировать нельзя, то как можно понять, что запуск произведен именно по нажатию на push? Задача актуальна не только для Android, но и iOS. Буду ОЧЕНЬ БЛАГОДАРЕН за помощь!
  23. Для доступа к памяти вам нужно запросить необходимые разрешения в реальном времени, на форуме куча примеров
  24. Я не знаю но думаю так по памяти, в AndroidManifest.template: targetSdk=30.
  25. Добрый день! Делаю кроссплатформенное приложение. В TBitmap в памяти "рисую" картинку, затем передаю ее на TImage через TCanvas: with Image1.Bitmap.Canvas do begin BeginScene; DRect := TRectF.Create(0, 0, MonsterBitmap.Width - 1, MonsterBitmap.Height - 1); DrawBitmap(MonsterBitmap, DRect, DRect, 1, true); EndScene; end; В Windows-приложении все нормально, области рисования заполняются четко как положено, без всякого масштабирования. А вот в Android-приложении на моем телефоне картинка почему-то растягивается в три раза! А на телефоне жены - в два раза! В чем подвох, где нужно отключить паразитное масштабирование?
×
×
  • Создать...