小编Fil*_*lva的帖子

什么导致 GC 尝试释放比注册为已分配的字节更多的本机字节(java.lang.Error:Cleaner 异常终止)

最近我们的 Android 应用程序一直在关闭,而没有报告任何崩溃。

在查看系统转储日志后,我们查明了发生这种情况时总是出现的常见日志。

不幸的是,我们没有任何步骤来重现它,因为它发生在应用程序的随机点,但我们想知道是否有人知道可能是此类问题的根本原因。

显然,当垃圾收集器开始正常运行时,它试图释放比注册为已分配的更多的本机字节。

我们在使用三星 Tab A (2016) T585 平板电脑的 Android 7 和 8.1 上发生了这种情况,这是我们目前支持的版本。

这是系统日志的摘录:

06-06 11:53:27.243  3954  3965 I art     : Background partial concurrent mark sweep GC freed 189192(8MB) AllocSpace objects, 25(7MB) LOS objects, 40% free, 13MB/22MB, paused 1.940ms total 126.255ms
06-06 11:53:27.244  3954  3962 W System.err: java.lang.Error: Cleaner terminated abnormally
06-06 11:53:27.246  3954  3962 W System.err:    at sun.misc.Cleaner$1.run(Cleaner.java:147)
06-06 11:53:27.246  3954  3962 W System.err:    at sun.misc.Cleaner$1.run(Cleaner.java:145)
06-06 11:53:27.247  3954  3962 W System.err:    at java.security.AccessController.doPrivileged(AccessController.java:41)
06-06 …
Run Code Online (Sandbox Code Playgroud)

java android garbage-collection jvm java-8

9
推荐指数
0
解决办法
405
查看次数

标签 统计

android ×1

garbage-collection ×1

java ×1

java-8 ×1

jvm ×1