realm / realm-java

Realm is a mobile database: a replacement for SQLite & ORMs
http://realm.io
Apache License 2.0
11.45k stars 1.75k forks source link

Non-fatal Exception: java.lang.RuntimeException: mmap() failed: Out of memory size: #7838

Closed gvmarozzi closed 7 months ago

gvmarozzi commented 11 months ago

How frequently does the bug occur?

Sometimes

Description

I have a java in android that use io.realm:realm-gradle-plugin:10.8.0.

In few cases i am getting Out of memory.

public Pedido salvaPedido(Pedido pedido) { realm.beginTransaction(); realm.insertOrUpdate(pedido); realm.commitTransaction(); //The error happens here return pedido; }

Stacktrace & log output

Non-fatal Exception: java.lang.RuntimeException: mmap() failed: Out of memory size: 60030976 offset: 0 in /tmp/realm-java/realm/realm-library/src/main/cpp/io_realm_internal_OsSharedRealm.cpp line 144
       at io.realm.internal.OsSharedRealm.nativeCommitTransaction(OsSharedRealm.java)
       at io.realm.internal.OsSharedRealm.commitTransaction(OsSharedRealm.java:283)
       at io.realm.BaseRealm.commitTransaction(BaseRealm.java:450)
       at io.realm.Realm.commitTransaction(Realm.java:136)
       at br.com.inndev.service.DadosEventoService.salvaPedido(DadosEventoService.java:306)
       at br.com.inndev.fragment.PagamentoFragment.finalizaPedido(PagamentoFragment.java:1201)
       at br.com.inndev.fragment.PagamentoFragment.finalizaPedido(PagamentoFragment.java:1080)
       at br.com.inndev.fragment.PagamentoFragment.access$1000(PagamentoFragment.java:65)
       at br.com.inndev.fragment.PagamentoFragment$2.onClick(PagamentoFragment.java:215)
       at android.view.View.performClick(View.java:5720)
       at android.view.View$PerformClick.run(View.java:22838)
       at android.os.Handler.handleCallback(Handler.java:836)
       at android.os.Handler.dispatchMessage(Handler.java:103)
       at android.os.Looper.loop(Looper.java:203)
       at android.app.ActivityThread.main(ActivityThread.java:6337)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1084)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:945)

Can you reproduce the bug?

Sometimes

Reproduction Steps

No response

Version

io.realm:realm-gradle-plugin:10.8.0

What Atlas App Services are you using?

Local Database only

Are you using encryption?

No

Platform OS and version(s)

Android sdk 23

Build environment

Android Studio version: 2021.3.1 Android Build Tools version: io.realm:realm-gradle-plugin:10.8.0 Gradle version:

rorbech commented 10 months ago

Hi @gvmarozzi. This can happen for a number of reasons and hard to say without some details on the actual realm usage. Realm files are mapped to memory when opened, so it is most probably due to a growing realm file. This is usually a version pinning issue where a Realm instance is not closed properly or when the realm is instantiated in a non-looper thread.

You can see more about the realm instance life cycle at https://www.mongodb.com/docs/realm/sdk/java/realm-files/open-and-close-a-realm/

Can you provide more details about you realm usage?

rorbech commented 7 months ago

Closing due to missing feedback.