greenrobot / greenDAO

greenDAO is a light & fast ORM solution for Android that maps objects to SQLite databases.
http://greenrobot.org/greendao/
12.63k stars 2.89k forks source link

Could not allocate CursorWindow '/data/user/0/com.wedo.wedotalk/databases/mldb-157109' of size 2097152 due to error -12 #1080

Closed lixiaolong332435890 closed 1 year ago

lixiaolong332435890 commented 2 years ago

Could not allocate CursorWindow '/data/user/0/com.wedo.wedotalk/databases/mldb-157109' of size 2097152 due to error -12. android.database.CursorWindow.nativeCreate(Native Method) android.database.CursorWindow.(CursorWindow.java:139) android.database.CursorWindow.(CursorWindow.java:120) android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:202) android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:147) android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:140) android.database.AbstractCursor.moveToPosition(AbstractCursor.java:232) android.database.AbstractCursor.moveToFirst(AbstractCursor.java:271) org.greenrobot.greendao.AbstractDao.loadUnique(AbstractDao.java:166) org.greenrobot.greendao.AbstractDao.loadUniqueAndCloseCursor(AbstractDao.java:159) org.greenrobot.greendao.InternalQueryDaoAccess.loadUniqueAndCloseCursor(InternalQueryDaoAccess.java:41) org.greenrobot.greendao.query.Query.unique(Query.java:130) org.greenrobot.greendao.query.QueryBuilder.unique(QueryBuilder.java:477)

boboqun commented 2 years ago

Same question

greenrobot-team commented 2 years ago

This means there is not enough free memory for the Cursor buffer. You need to check your app does not hold onto too many resources. See the following comment for how to troubleshoot this: https://github.com/android/architecture-components-samples/issues/289#issuecomment-381667976

yohoph commented 1 year ago

We have the same question。What do you the more info?

yohoph commented 1 year ago

11-18 23:45:14.448 1339 1459 W libc : pthread_create failed: couldn't allocate 1085440-bytes mapped space: Out of memory 11-18 23:45:14.448 1339 1459 W com.keenon.kc0: Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Try again" (VmSize 3120156 kB) 11-18 23:45:14.458 1339 1459 E request : uri/api/v1/clean/cleanDetailUpdate 11-18 23:45:14.458 1339 1459 E request : java.lang.reflect.InvocationTargetException 11-18 23:45:14.458 1339 1459 E request : at java.lang.reflect.Method.invoke(Native Method) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.ApiHandleInterceptor.interceptor(ApiHandleInterceptor.java:12) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.HttpServerInterceptorChain.proceed(HttpServerInterceptorChain.java:5) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.slam.interceptor.RobotStatusInterceptor.interceptor(RobotStatusInterceptor.java:14) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.HttpServerInterceptorChain.proceed(HttpServerInterceptorChain.java:5) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.slam.interceptor.HttpLogInterceptor.interceptor(HttpLogInterceptor.java:9) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.HttpServerInterceptorChain.proceed(HttpServerInterceptorChain.java:5) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.HttpErrorStatusInterceptor.interceptor(HttpErrorStatusInterceptor.java:7) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.interceptor.HttpServerInterceptorChain.proceed(HttpServerInterceptorChain.java:5) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.api.scan.ApiProvider.execute(ApiProvider.java:3) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.android.sync.ResponseUtils.getGetApi(ResponseUtils.java:1) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.android.sync.RequestUtils.doMethod(RequestUtils.java:12) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.android.sync.ApiServerManager.onRequest(ApiServerManager.java:7) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.j.h.n(AsyncHttpServer.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.j.h$a$a.P(AsyncHttpServer.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.j.h$a$a.d(AsyncHttpServer.java:8) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.j.j$a.d(AsyncHttpServerRequestImpl.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.h.b$a.b(JSONObjectBody.java:2) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.h.b$a.a(JSONObjectBody.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.j.m(SimpleFuture.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.e.a(Unknown Source:2) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.j$b.a(SimpleFuture.java:7) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.j.k(SimpleFuture.java:6) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.j.x(SimpleFuture.java:9) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.b0.j.y(SimpleFuture.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.d0.c$c.d(ByteBufferListParser.java:2) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.o.z(DataEmitterBase.java:4) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.i.d.z(ContentLengthFilter.java:3) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.c0.i.d.l(ContentLengthFilter.java:9) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.z.a(Util.java:2) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.e.B(AsyncNetworkSocket.java:12) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.h.s(AsyncServer.java:26) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.h.q(AsyncServer.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.h.c(AsyncServer.java:1) 11-18 23:45:14.458 1339 1459 E request : at b.d.a.h$c.run(AsyncServer.java:2) 11-18 23:45:14.458 1339 1459 E request : Caused by: java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again 11-18 23:45:14.458 1339 1459 E request : at java.lang.Thread.nativeCreate(Native Method) 11-18 23:45:14.458 1339 1459 E request : at java.lang.Thread.start(Thread.java:883) 11-18 23:45:14.458 1339 1459 E request : at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:975) 11-18 23:45:14.458 1339 1459 E request : at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1393) 11-18 23:45:14.458 1339 1459 E request : at org.greenrobot.eventbus.a.a(AsyncPoster.java:3) 11-18 23:45:14.458 1339 1459 E request : at org.greenrobot.eventbus.c.o(EventBus.java:2) 11-18 23:45:14.458 1339 1459 E request : at org.greenrobot.eventbus.c.n(EventBus.java:8) 11-18 23:45:14.458 1339 1459 E request : at org.greenrobot.eventbus.c.m(EventBus.java:6) 11-18 23:45:14.458 1339 1459 E request : at org.greenrobot.eventbus.c.l(EventBus.java:9) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.slam.service.CleanServiceImpl.cleanUpdateByTaskManager(CleanServiceImpl.java:18) 11-18 23:45:14.458 1339 1459 E request : at com.keenon.module.slam.apiImpl.CleanApiImpl.cleanDetailUpdate(CleanApiImpl.java:1) 11-18 23:45:14.458 1339 1459 E request : ... 35 more 11-18 23:45:14.459 1339 1459 I HttpRequest: AsyncServer AppHttpRequest-54fca89d02ce40de8641a291eab3071e uri:/api/v1/clean/cleanDetailUpdate responseTime:12ms 11-18 23:45:15.143 1339 1452 E CursorWindow: CursorWindow: mmap() failed: errno=12. 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: cleanSendTimer-1 CleanSendTask 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: android.database.CursorWindowAllocationException: Could not allocate CursorWindow '/storage/emulated/0/keenon/db/kc01.db' of size 2097152 due to error -12. 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.CursorWindow.nativeCreate(Native Method) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.CursorWindow.(CursorWindow.java:139) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.CursorWindow.(CursorWindow.java:120) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.AbstractWindowedCursor.clearOrCreateWindow(AbstractWindowedCursor.java:202) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:147) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:140) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:232) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at android.database.AbstractCursor.moveToFirst(AbstractCursor.java:271) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at g.a.a.a.loadUnique(AbstractDao.java:1) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at g.a.a.a.loadUniqueAndCloseCursor(AbstractDao.java:1) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at g.a.a.a.load(AbstractDao.java:7) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at com.keenon.module.slam.service.CleanServiceImpl.getCleanStrategyById(CleanServiceImpl.java:1) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at com.keenon.module.slam.service.CleanServiceImpl.getNotCloseClean(CleanServiceImpl.java:2) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at com.keenon.module.slam.task.CleanSendTask.lambda$restartTimer$0(CleanSendTask.java:7) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at com.keenon.module.slam.task.a.run(Unknown Source:0) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:307) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:302) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 11-18 23:45:15.145 1339 1452 E com.keenon.module.slam.task.CleanSendTask: at java.lang.Thread.run(Thread.java:919)

yohoph commented 1 year ago

@greenrobot-team

greenrobot-team commented 1 year ago

I've linked on instructions on how to debug this in my last comment: https://github.com/greenrobot/greenDAO/issues/1080#issuecomment-1161533616