diff options
author | E.Z. Hart <hartez@users.noreply.github.com> | 2016-09-27 04:51:22 -0600 |
---|---|---|
committer | Rui Marinho <me@ruimarinho.net> | 2016-09-27 11:51:22 +0100 |
commit | 6aa96a43915edaa8fa03ab9bf5abf00fd424f3f1 (patch) | |
tree | 51b81383a24596e09000c1d609c8967d0a3d9300 /Xamarin.Forms.Controls.Issues | |
parent | 2d5785731ed0062af80a0e85763316a63f64afa8 (diff) | |
download | xamarin-forms-6aa96a43915edaa8fa03ab9bf5abf00fd424f3f1.tar.gz xamarin-forms-6aa96a43915edaa8fa03ab9bf5abf00fd424f3f1.tar.bz2 xamarin-forms-6aa96a43915edaa8fa03ab9bf5abf00fd424f3f1.zip |
Clean up listeners and tag on ButtonRenderer during disposal (#360)
Clean up OnFocusChangeListener on ViewRenderer during disposal
Prevent memory leak of PageContainer/FragmentContainer when animating fragment transitions
Call Destroy() on Map during disposal
Rebasing
Diffstat (limited to 'Xamarin.Forms.Controls.Issues')
2 files changed, 76 insertions, 0 deletions
diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla39489.cs b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla39489.cs new file mode 100644 index 00000000..266b0fa6 --- /dev/null +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Bugzilla39489.cs @@ -0,0 +1,75 @@ +using Xamarin.Forms.CustomAttributes; +using Xamarin.Forms.Internals; +using System.Threading; +using System; +using System.Threading.Tasks; +using Xamarin.Forms.Maps; + +#if UITEST +using Xamarin.UITest; +using NUnit.Framework; +#endif + +namespace Xamarin.Forms.Controls +{ + [Preserve(AllMembers = true)] + [Issue(IssueTracker.Bugzilla, 39489, "Memory leak when using NavigationPage with Maps", PlatformAffected.Android)] + public class Bugzilla39489 : TestNavigationPage + { + protected override void Init() + { + PushAsync(new Bz39489Content()); + } + + #if UITEST + [Test] + public async void Bugzilla39458Test() + { + // Original bug report (https://bugzilla.xamarin.com/show_bug.cgi?id=39489) had a crash (OOM) after 25-30 + // page loads. Obviously it's going to depend heavily on the device and amount of available memory, but + // if this starts failing before 50 we'll know we've sprung another serious leak + int iterations = 50; + + for (int n = 0; n < iterations; n++) + { + RunningApp.WaitForElement(q => q.Marked("New Page")); + RunningApp.Tap(q => q.Marked("New Page")); + RunningApp.WaitForElement(q => q.Marked("New Page")); + await Task.Delay(1000); + RunningApp.Back(); + } + } + #endif + } + + [Preserve(AllMembers = true)] + public class Bz39489Content : ContentPage + { + public Bz39489Content() + { + var button = new Button { Text = "New Page" }; + + var gcbutton = new Button { Text = "GC" }; + + var map = new Map(); + + button.Clicked += Button_Clicked; + gcbutton.Clicked += GCbutton_Clicked; + + Content = new StackLayout { Children = { button, gcbutton, map } }; + } + + void GCbutton_Clicked(object sender, EventArgs e) + { + System.Diagnostics.Debug.WriteLine(">>>>>>>> Running Garbage Collection"); + GC.Collect(); + GC.WaitForPendingFinalizers(); + System.Diagnostics.Debug.WriteLine($">>>>>>>> GC.GetTotalMemory = {GC.GetTotalMemory(true):n0}"); + } + + void Button_Clicked(object sender, EventArgs e) + { + Navigation.PushAsync(new Bz39489Content()); + } + } +}
\ No newline at end of file diff --git a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems index 364b3c44..7a47c10f 100644 --- a/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems +++ b/Xamarin.Forms.Controls.Issues/Xamarin.Forms.Controls.Issues.Shared/Xamarin.Forms.Controls.Issues.Shared.projitems @@ -437,6 +437,7 @@ <Compile Include="$(MSBuildThisFileDirectory)Issue55555.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla41029.cs" /> <Compile Include="$(MSBuildThisFileDirectory)Bugzilla39908.cs" /> + <Compile Include="$(MSBuildThisFileDirectory)Bugzilla39489.cs" /> </ItemGroup> <ItemGroup> <EmbeddedResource Include="$(MSBuildThisFileDirectory)Bugzilla22229.xaml"> |