首页 > 解决方案 > JNI 错误(应用程序错误):Xamarin.Android 中的弱全局引用表溢出(最大值 = 51200)

问题描述

我正在使用 Visual Studio IDE 7.7 版处理 Xamarin Android 项目。在两个活动之间导航 6 次后,我收到此错误。我不知道如何解决这个问题。谷歌搜索后,我可以理解这将是更多全球参考的原因。

[art] art/runtime/indirect_reference_table.cc:128] JNI ERROR (app bug): weak global reference table overflow (max=51200)
[art] art/runtime/indirect_reference_table.cc:128] weak global reference table dump:
[art] art/runtime/indirect_reference_table.cc:128]   Last 10 entries (of 51200):
[art] art/runtime/indirect_reference_table.cc:128]     51199: 0x176d4400 android.widget.Button
[art] art/runtime/indirect_reference_table.cc:128]     51198: 0x15f13190 java.lang.String "https://atozfurn... (78 chars)
[art] art/runtime/indirect_reference_table.cc:128]     51197: 0x168ab800 android.widget.TextView
[art] art/runtime/indirect_reference_table.cc:128]     51196: 0x15abdb80 com.bumptech.glide.request.target.DrawableImageViewTarget
[art] art/runtime/indirect_reference_table.cc:128]     51195: 0x14e3a160 java.lang.Integer
[art] art/runtime/indirect_reference_table.cc:128]     51194: 0x14f22c00 android.widget.ImageView
[art] art/runtime/indirect_reference_table.cc:128]     51193: 0x159dec00 android.widget.ImageView
[art] art/runtime/indirect_reference_table.cc:128]     51192: 0x17241400 android.widget.Button
[art] art/runtime/indirect_reference_table.cc:128]     51191: 0x18675800 android.widget.Button
[art] art/runtime/indirect_reference_table.cc:128]     51190: 0x14e9ee20 java.lang.String "https://atozfurn... (112 chars)
[art] art/runtime/indirect_reference_table.cc:128]   Summary:
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.google.firebase.iid.FirebaseInstanceId
[art] art/runtime/indirect_reference_table.cc:128]         7 of android.support.v7.view.menu.MenuBuilder (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of md5ad7193dba8ab38209230f445b14ed0f9.MainActivity
[art] art/runtime/indirect_reference_table.cc:128]         3 of md5fa1ac5b576d3ee42b2a11a88c1a40164.HomeActivity (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.google.android.gms.common.GoogleApiAvailability
[art] art/runtime/indirect_reference_table.cc:128]         6 of md5d62d93d8fe9047f7cede206e3c4c9b86.SliderAdapter (6 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.google.firebase.messaging.FirebaseMessaging
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.nostra13.universalimageloader.core.ImageLoaderConfiguration
[art] art/runtime/indirect_reference_table.cc:128]        24 of mono.android.widget.AdapterView_OnItemClickListenerImplementor (24 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.nostra13.universalimageloader.core.ImageLoader
[art] art/runtime/indirect_reference_table.cc:128]         3 of md517e16c37e5a39ffebf34f8de696179e6.HomeFragment_SliderTimer (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.v4.widget.DrawerLayout (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         9 of android.support.v7.widget.Toolbar (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.design.widget.NavigationView (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.design.widget.TabLayout (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        35 of android.support.v7.view.menu.MenuItemImpl (35 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         6 of android.support.v7.view.SupportMenuInflater (6 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        78 of android.support.v7.widget.AppCompatImageView (78 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        20 of android.support.v7.widget.AppCompatTextView (20 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        36 of android.support.design.widget.FloatingActionButton (36 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of android.support.design.internal.NavigationMenu (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        14 of android.support.v7.app.ToolbarActionBar (14 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.v7.widget.AppCompatImageButton (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]       350 of mono.android.view.View_OnClickListenerImplementor (350 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.v7.app.AlertDialog (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of android.support.v7.graphics.drawable.DrawerArrowDrawable (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        18 of md59ebb8a1c6f05fa0e4236113878bde706.BadgeDrawable (18 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of mono.android.support.design.widget.NavigationView_OnNavigationItemSelectedListenerImplementor (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.support.v7.app.ActionBarDrawerToggle (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of mono.android.animation.AnimatorEventDispatcher (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.bumptech.glide.RequestManager
[art] art/runtime/indirect_reference_table.cc:128]       707 of com.bumptech.glide.request.target.DrawableImageViewTarget (707 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of md517e16c37e5a39ffebf34f8de696179e6.HomeFragment (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.widget.SearchView (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of android.widget.SearchView$SearchAutoComplete (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        21 of android.support.v7.widget.AppCompatButton (21 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         5 of md59ebb8a1c6f05fa0e4236113878bde706.ViewPagerCustomDuration (5 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         6 of md5fa1ac5b576d3ee42b2a11a88c1a40164.CategoryActivity (6 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        12 of android.widget.GridView (12 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         6 of android.support.design.widget.BottomSheetBehavior (6 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of md5e4befe2abca7f73da05d796cea9fa280.RangeSliderControl (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of md5d62d93d8fe9047f7cede206e3c4c9b86.CAtegoryAdapter (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of md5d62d93d8fe9047f7cede206e3c4c9b86.CategoryListAdapter (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        12 of mono.android.widget.AbsListView_OnScrollListenerImplementor (12 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        49 of md5d62d93d8fe9047f7cede206e3c4c9b86.CAtegoryAdapter_ViewHolder (49 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of java.lang.Class (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]      4938 of java.lang.String (4938 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of byte[] (1440 elements) (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (1764 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (1836 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (3480 elements)
[art] art/runtime/indirect_reference_table.cc:128]         3 of byte[] (5016 elements) (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (5040 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (6912 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (7392 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (7740 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (7896 elements)
[art] art/runtime/indirect_reference_table.cc:128]         6 of byte[] (8464 elements) (6 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         5 of byte[] (9216 elements) (5 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (9460 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (9632 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (9680 elements)
[art] art/runtime/indirect_reference_table.cc:128]         4 of byte[] (10080 elements) (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (10816 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (12544 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (14880 elements)
[art] art/runtime/indirect_reference_table.cc:128]        11 of byte[] (15876 elements) (11 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        21 of byte[] (16384 elements) (21 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (17280 elements)
[art] art/runtime/indirect_reference_table.cc:128]         9 of byte[] (20736 elements) (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (21828 elements)
[art] art/runtime/indirect_reference_table.cc:128]         2 of byte[] (24964 elements) (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        27 of byte[] (26244 elements) (27 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (32256 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (32448 elements)
[art] art/runtime/indirect_reference_table.cc:128]         2 of byte[] (34848 elements) (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         2 of byte[] (35344 elements) (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        17 of byte[] (36864 elements) (17 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (38416 elements)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (44100 elements)
[art] art/runtime/indirect_reference_table.cc:128]         3 of byte[] (46656 elements) (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         2 of byte[] (47808 elements) (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (57984 elements)
[art] art/runtime/indirect_reference_table.cc:128]         3 of byte[] (79488 elements) (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (82368 elements)
[art] art/runtime/indirect_reference_table.cc:128]         3 of byte[] (82944 elements) (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of byte[] (92984 elements) (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of byte[] (108000 elements) (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (125316 elements)
[art] art/runtime/indirect_reference_table.cc:128]         5 of byte[] (270400 elements) (5 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]       167 of byte[] (328560 elements) (167 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of byte[] (419580 elements)
[art] art/runtime/indirect_reference_table.cc:128]         9 of byte[] (977416 elements) (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]       135 of java.lang.Integer (135 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of java.util.Timer (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        33 of java.lang.DexCache (33 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of dalvik.system.PathClassLoader (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         9 of android.widget.ProgressBar (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         8 of com.android.internal.policy.PhoneLayoutInflater (8 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        12 of android.widget.FrameLayout (12 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]      2894 of android.widget.Button (2894 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]      4907 of android.widget.TextView (4907 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]      1802 of android.widget.ImageView (1802 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         9 of android.widget.ListView (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         5 of android.view.DisplayListCanvas (5 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]      1206 of android.widget.LinearLayout (1206 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of android.graphics.Matrix (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of com.android.internal.policy.PhoneWindow
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.widget.ScrollView (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]       117 of android.widget.RelativeLayout (117 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         9 of android.content.res.Resources (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of android.util.DisplayMetrics
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.os.Looper (1 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of android.graphics.Bitmap$Config
[art] art/runtime/indirect_reference_table.cc:128]         8 of android.content.Intent (8 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        25 of android.graphics.Bitmap (25 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of android.app.FragmentManagerImpl (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.os.Handler (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        18 of android.view.animation.AnimationSet (18 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of android.view.ViewConfiguration
[art] art/runtime/indirect_reference_table.cc:128]         4 of android.util.TypedValue (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         7 of android.graphics.Path (7 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        50 of android.graphics.Paint (50 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        18 of android.animation.ObjectAnimator (18 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of android.view.ContextThemeWrapper (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         9 of android.app.AlertDialog (9 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         3 of android.os.Bundle (3 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         2 of android.os.AsyncTask$Status (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        38 of android.graphics.Rect (38 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]     32342 of android.view.RenderNode (32342 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]        25 of android.graphics.RectF (25 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]       651 of android.graphics.drawable.BitmapDrawable (651 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of android.graphics.Paint$Align
[art] art/runtime/indirect_reference_table.cc:128]         2 of android.graphics.Paint$Style (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         4 of android.content.res.TypedArray (4 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         2 of android.content.res.XmlBlock$Parser (2 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         1 of android.graphics.PorterDuff$Mode
[art] art/runtime/indirect_reference_table.cc:128]        13 of android.app.SharedPreferencesImpl$EditorImpl (13 unique instances)
[art] art/runtime/indirect_reference_table.cc:128]         8 of android.content.res.Resources$Theme (8 unique instances)
[art] art/runtime/indirect_reference_table.cc:128] 
[art] art/runtime/runtime.cc:403] Runtime aborting...
[art] art/runtime/runtime.cc:403] Aborting thread:

标签: c#androidvisual-studioxamarinxamarin.android

解决方案


我可以告诉你它是什么。修复它更难。当您使用 JNI(即 Java 原生接口,它如何调用 C 代码)时,您必须保留对 Java 堆的引用。您可以拥有的数量是有限的。强引用和弱引用有不同的限制,弱引用的限制是 51200。你有更多。

唯一的解决方案是减少引用的数量。真正的问题是为什么你有这么多?我看到了 3 个 HomeActivity 实例,因此可能存在内存泄漏。我还看到了 32K 渲染节点,我什至不确定你是如何做到的。我看到数以千计的文本视图——除了大量内存泄漏之外,我唯一的想法是你正在制作大量长视图而不使用 recyclierview/listview/gridview,这无论如何都是个坏主意


推荐阅读