Здравствуйте!
Пишу на 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?