2015-08-27 2 views
0

Если вы проанализируете следующий код, вы увидите, что там много раз вызывается функция (pushNextEntityUpdatedRows, pushNextUpdatedRow, pushNextEntityCreatedRows, pushNextCreatedRow), то есть не BUG, ​​Thats, как я отказался от своего кода для работы. Что вы должны знать, так это то, что у меня есть класс (DataAccess), который расширяет SQLiteOpenHelper, и я только создаю экземпляр этого класса один раз. Каждый раз, когда вызывается функция pushNextEntityUpdatedRows и pushNextEntityCreatedRows, rawQuery выполняется в экземпляре класса DataAccess. Я никогда не закрываю соединение, я закрываю только экземпляры объектов Cursor. Я не знаю, что вызывает это StackOverflowError. Я также не знаю, почему это всегда происходит после 145 вызовов. Как это решить? Спасибо заранее.StackOverflowError in android application

Трассировка стека говорит мне так:

java.lang.StackOverflowError 
    at java.util.WeakHashMap.poll(WeakHashMap.java:550) 
    at java.util.WeakHashMap.put(WeakHashMap.java:589) 
    at android.database.sqlite.SQLiteConnectionPool.finishAcquireConnectionLocked(SQLiteConnectionPool.java:980) 
    at android.database.sqlite.SQLiteConnectionPool.tryAcquirePrimaryConnectionLocked(SQLiteConnectionPool.java:916) 
    at android.database.sqlite.SQLiteConnectionPool.waitForConnection(SQLiteConnectionPool.java:682) 
    at android.database.sqlite.SQLiteConnectionPool.acquireConnection(SQLiteConnectionPool.java:400) 
    at android.database.sqlite.SQLiteSession.acquireConnection(SQLiteSession.java:905) 
    at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:586) 
    at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
    at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37) 
    at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44) 
    at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1436) 
    at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1375) 
    at mz.co.cloud.dumbo.db.LSH.getAllNewCreatedRows(LSH.java:2072) 
    at mz.co.cloud.dumbo.syncmechanism.SyncDataAccessImplementation.getAllNewCreatedRows(SyncDataAccessImplementation.java:182) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1039) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1169) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1154) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextCreatedRow(SyncWorker.java:1355) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityCreatedRows(SyncWorker.java:1046) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:714) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextUpdatedRow(SyncWorker.java:1020) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushNextEntityUpdatedRows(SyncWorker.java:704) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.pushData(SyncWorker.java:678) 
    at mz.co.cloud.dumbo.syncmechanism.SyncWorker.startWork(SyncWorker.java:197) 
    at mz.co.cloud.dumbo.syncmechanism.DumboSync$1.onMessage(DumboSync.java:213) 
    at com.pier.PierClient$1.run(PierClient.java:268) 
    at com.pier.core.WorkQueue$PoolWorker.run(WorkQueue.java:81) 
+1

Вы спрашиваете в нужном месте. –

+3

Проще говоря, StackOverflowError вызывается, когда функция вызывается одной функцией, которая была вызвана другой функцией, которая была вызвана другой функцией, и этот шаблон имеет слишком много уровней. Чаще всего это вызвано вызовом функции внутри собственного тела функции, создавая бесконечный цикл вызовов функций. –

+0

опубликуйте свой код или мы не сможем вам помочь –

ответ

2

выглядит как у вас есть цикл или рекурсивную функцию, которая где-то не доходит до разрыва/конец петли/функции. В большинстве случаев это происходит, когда вы проверяете с помощью оператора if в конце рекурсивной функции, но на самом деле никогда не меняете условие if-statement. И в какой-то момент ваш comuter не имеет достаточного «пространства для размышлений», чтобы идти дальше по кроличьей дыре. (так как каждая итерация занимает определенную часть общего пространства, чтобы сказать это простым способом, и, по-видимому, на 145 итерациях вы достигли предела)

без кода, который мы не можем вам помочь, как насчет добавления образец кода?

+2

Что делать, если после 100 итераций я возвращаю функцию и снова запускаю функцию из таймера? Все, что я хочу, - это иметь такое вмешательство навсегда. Навсегда я имею в виду, что это на самом деле не заканчивается. Будет ли таймер помогать мне? –

+2

есть. Если после 100 итераций вы вернетесь, стек будет меньше/«спуститься» снова. то вы можете начать заново. В принципе, вы не можете запустить 146 экземпляров одной и той же функции одновременно. Но 144 работы. Так что да, это поможет. – Cribber