我们在Xamarin.Forms Android应用程序中遇到内存泄漏问题,而且我一直在调查使用Profiler。这导致我对一个非常基本的Forms应用程序运行Profiler。
非常基本的Forms应用程序基于Visual Studio For Mac中提供的简单List-> Detail模板项目。
所有这一切都是使用内置的导航堆栈从列表页面导航到详细信息页面。
async void OnItemSelected(object sender, SelectedItemChangedEventArgs args)
{
var item = args.SelectedItem as Item;
if (item == null)
return;
await Navigation.PushAsync(new ItemDetailPage(new ItemDetailViewModel(item)));
// Manually deselect item
ItemsListView.SelectedItem = null;
}
从List-> Details->列表11次然后在Profiler中拍摄快照显示我们已经创建了372个BindablePropertyContext对象和22个Labels(以及其他对象):
我已尝试在<详细信息页面的 OnDisappearing 事件中将 Content 设置为null并将 BindingContext 设置为null,并且还放置了显式GC 。在列表页面的OnAppearing中收集()。这些都没有解决问题。
对于打算在设备上连续运行的应用,这是不可接受的!
表格中是否存在核心内存泄漏,或者我遗漏了什么?
我使用的是Xamarin.Forms 2.5.0.121934
答案 0 :(得分:0)
在功能较弱的设备上运行(即内存较少),显示这些对象实际上是GC,因此实际上没有问题,也没有泄漏。