Я создаю приложение, содержащее WebView
, которое запускает некоторый код JavaScript. Этот код JavaScript довольно тяжелый и может потребовать много памяти.
Иногда количество требуемой памяти превышает количество, которое может потребоваться JavaScript, и сбой Chromium-процесса WebView, который разбивает мое приложение.
Я слушаю onMemoryTrim
в своем приложении, но он никогда не вызывается в этом сценарии на устройствах с объемом памяти более 1 ГБ. (Даже с TRIM_MEMORY_RUNNING_LOW
).
Можно ли каким-либо образом обнаружить, что мой WebView работает на низкой памяти, и либо убить его, либо сообщить ему (чтобы он мог освободить память)?
Я опробовал опрос performance.memory
, но это не сработало. Следующий script сбой WebView, если он выполняется в нем:
var a = [];
var kek = () => {
var b = [];
for(var i = 0; i < 1024 * 1024 * 2; i++) b.push(Math.random());
return b;
}
var ival = setInterval(() => {
let m = performance.memory;
if(m.jsHeapSizeLimit - m.usedJSHeapSize < 1e5) {
console.log("Memory limited")
} else {
a.push(kek());
}
});
Есть ли способ обнаружить, что память вот-вот закончится, чтобы я мог обработать ее изящно без сбоя приложения?