Я довольно новичок в Android и Kotlin.
У меня есть приложение, которое выполняет некоторые вычисления. Я пытаюсь сделать тестирование производительности. Для этого я хочу создать 10000 объектов:
Thread().run() {
try {
val realm = Realm.getDefaultInstance()
// Test endedSessions
val sessions = realm.where<Session>().findAll()
if (sessions.size < 10) {
val numberOfSessions = 10000
realm.beginTransaction()
for (index in 0..numberOfSessions) {
if (index % 1000 == 999) { // added to test and understand when it's crashing
Timber.d("****** committing at ${index} sessions...")
realm.commitTransaction()
realm.beginTransaction()
}
val session = Session.newInstance(realm, false)
// Set Data
val calendar = Calendar.getInstance()
calendar.set(
(2017..2018).random(),
(0..11).random(),
(0..28).random(),
(0..23).random(),
(0..59).random()
)
val startDate = calendar.time
calendar.add(Calendar.HOUR_OF_DAY, (2..12).random())
calendar.add(Calendar.MINUTE, (0..59).random())
val endDate = calendar.time
session.startDate = startDate
session.endDate = endDate
session.result?.let { result ->
result.buyin = buyinList.random()
result.netResult = resultsList.random()
}
}
realm.commitTransaction()
}
realm.close()
} catch (e: Exception) {
Timber.e(e)
}
}
Проблема в том, что после 5000 сеансов на эмуляторе я получаю следующую ошибку:
I / art: Thread [3, tid = 26297, WaitingInMainSignalCatcherLoop, Thread * = 0x9e560e00, peer = 0x12cf79d0, "Signal Catcher"]: реагирование на сигнал 3
A / libc: фатальный сигнал 11 (SIGSEGV), код 1, адрес ошибки 0x65726e59 в тид 26292 (alytics.android)
I / art: написал трассировки стека в '/data/anr/traces.txt'
Приложение прекращено.
Я не уверен, что это лучшая практика для вставки большого количества объектов в Царство.
Спасибо за вашу помощь!