android - Firebase 角度内存不足崩溃
问题描述
我正在使用 Angular 和 Firebase 开发离子应用程序。下面的代码在浏览器上运行时运行良好。但它总是在 Android 设备(物理或虚拟)上崩溃
this.subsGetAllApp = this.afDb.collection<IAppointment>('appointments', (ref) => ref.where(idType, '==', userId)).snapshotChanges().pipe(
debounceTime(2000),
map((docs: DocumentChangeAction<IAppointment>[]) => {
return (docs.map((doc) => {
return ({
...doc.payload.doc.data() as IAppointment,
id: doc.payload.doc.id
});
}));
})
).subscribe((appointments) => {
this.store.dispatch(new GetAllAppointment(appointments));
});
此代码在应用程序初始化时启动。我试图在查询中添加更多 where 子句以获取更少的数据。它起作用了,这意味着某处存在内存问题,仅在一定数量的数据时才会出现。
来自 logcat 的错误日志:
2020-08-04 23:25:38.360 6236-6236/com.osteoapp.app E/chromium: [ERROR:aw_browser_terminator.cc(113)] Renderer process (6408) crash detected (code 5).
2020-08-04 23:25:38.379 6236-6236/com.osteoapp.app A/chromium: [FATAL:crashpad_client_linux.cc(404)] Render process (6408)'s crash wasn't handled by all associated webviews, triggering application crash.
2020-08-04 23:25:38.802 6236-6236/com.osteoapp.app A/libc: Fatal signal 4 (SIGILL), code 2 (ILL_ILLOPN), fault addr 0xd43dfc30 in tid 6236 (om.osteoapp.app), pid 6236 (om.osteoapp.app)
enter code here
解决方案
由于所有数据有足够的内存,您会收到此错误。
请尝试增加内存。您可以通过添加以下内容来修改 node_modules/.bin/ionic-app-scripts.cmd 来做到这一点:
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=4096 "%~dp0\..\@ionic\app-scripts\bin\ionic-app-scripts.js" %*
)
如果您在 Linux 中,则需要添加以下内容:
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node --max_old_space_size=4096" "$basedir/../@ionic/app-scripts/bin/ionic-app-scripts.js" "$@"
ret=$?
else
node --max_old_space_size=4096 "$basedir/../@ionic/app-scripts/bin/ionic-app-scripts.js" "$@"
ret=$?
fi
exit $ret
您还可以查看GitHub 问题,其中说明了之前的问题。
如果仍然更改以前的内容,您会遇到内存不足的问题,这是因为您受到设备硬件的限制。
推荐阅读
- capacitor - Android中的电容器相机预览上方未显示按钮
- javascript - v-for 循环在运行后打印空行
- php - 从验证 MessageBag 中替换消息数组
- c# - How to update Enum value in ASP.NET Core MVC?
- ios - __OBJC2__ 在哪里?
- wordpress - 为类别的 woocommerce 单品添加自定义文本
- java - can you help me how to breakdown the denomination of my change? I've been searching everywhere how to do it but I still don't get it
- sqlite - SQ Lite 使用 LIKE 函数仅查找两个或三个单词
- r - 在 R 中读取 .dta 文件时出错
- c# - ECDH 与 HKDF 使用 c#