Android did not support JNI Weak Global References until API-8 (Android 2.2). To allow Mono for Android applications to run on API-7 and earlier devices, while using JNI Weak Global References when possible (fewer GC allocations, better performance), the GC bridge supported two modes of operation:
debug.mono.wref=jni: Use JNI Weak Global References.
With the exception of a "minor" (lol) issue in KitKat v4.4.2 (API-19) -- in which JNIEnv::NewGlobalRef() around a collected JNI Weak Global Reference would return a non-NULL value, which would result in app crashes; xamarin/monodroid@a5c52905 added a workaround to use the WeakReference backend on Android 4.4.2 -- the debug.mono.wref=java backend has not been used since 2014.
Apps could use @(AndroidEnvironment) to set debug.mono.wref=java, but there is no reason to do so (worse performance!), nor has anyone done so on GitHub.com (no matches for debug.mono.wref within files that would be used with @(AndroidEnvironment)).
Cleanup src/native and src/Mono.Android, and remove support for the debug.mono.wref=java backend.
Context: https://github.com/dotnet/java-interop/issues/1255 Context: https://github.com/xamarin/monodroid/commit/a5c52905293d7eecdb3c078da62100081b338045 Context: https://issuetracker.google.com/issues/36986478 Context: https://github.com/dotnet/android/blob/b56d68fe2a2c2dffa47eb7e41ae08a00fda86367/Documentation/workflow/SystemProperties.md#debugmonowref
Android did not support JNI Weak Global References until API-8 (Android 2.2). To allow Mono for Android applications to run on API-7 and earlier devices, while using JNI Weak Global References when possible (fewer GC allocations, better performance), the GC bridge supported two modes of operation:
debug.mono.wref=jni
: Use JNI Weak Global References.debug.mono.wref=java
: Usejava.lang.ref.WeakReference
.With the exception of a "minor" (lol) issue in KitKat v4.4.2 (API-19) -- in which
JNIEnv::NewGlobalRef()
around a collected JNI Weak Global Reference would return a non-NULL
value, which would result in app crashes; xamarin/monodroid@a5c52905 added a workaround to use theWeakReference
backend on Android 4.4.2 -- thedebug.mono.wref=java
backend has not been used since 2014.Apps could use
@(AndroidEnvironment)
to setdebug.mono.wref=java
, but there is no reason to do so (worse performance!), nor has anyone done so on GitHub.com (no matches fordebug.mono.wref
within files that would be used with@(AndroidEnvironment)
).Cleanup src/native and src/Mono.Android, and remove support for the
debug.mono.wref=java
backend.