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

Баг в StringToJString - память не освобождается


soippv

Вопрос

Здравствуйте!

Пишу на Delphi в Rad Studio 10 Seattle.

Вы будете в шоке, но я нашел очень серьезный баг при работе нативных стандартных функций для Android.

Вот простой пример:

// Подключите дополнительно:  Androidapi.Helpers

function Test:boolean;
var
ii:integer;
begin
Result:=false;
try
      ii:=0;
      while (ii<100000) do
      begin
      try
          ii:=ii+1;
          log.d('Number='+inttostr(ii));
          StringToJString('TEST') ;  //CRASH AFTER ~ 51200
      except
      end;
      Result:=true;
     end;
 except
end;
end;

 

Приложение падает (исключение не ловится) если вызвать эту функцию! В logcat вижу следующую информацию об ошибке: JNI ERROR (app bug): global reference table overflow (max=51200) ....

 

Получается StringToJString не освобождает память.

Я пробовал также присваивать Js:JString; Js:= StringToJString('..'); Js._Release ; пробовал много способов по удалению выделенного объекта, но результат был отрицательный!!!

Помогите решить проблему с использование обычных строк JString!!

Как правильно освободить память из под JString?

Ссылка на комментарий

Рекомендуемые сообщения

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...