Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正常内存ram大小是多少?(xamarin)_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

C# 正常内存ram大小是多少?(xamarin)

C# 正常内存ram大小是多少?(xamarin),c#,android,xamarin,xamarin.android,C#,Android,Xamarin,Xamarin.android,我正在使用一个包含许多活动的应用程序。还有带有图像的listview等。这是来自apk的图片。 这是一张图片 第一个问题红色圆圈的记忆是什么?是拉姆吗?还是堆内存? 第二个问题,每个apk的正常大小是多少。它是否比大量内存安全? 第三个问题是我的应用程序的内存是否超过380mb。在某些情况下,它会使我的apk崩溃,并显示错误消息apk未响应。我能为此做点什么吗? 最常见的活动使用包含项目的列表视图:以下是我的部分代码: 我在apk中使用了很多sqlite var table = db.Query

我正在使用一个包含许多活动的应用程序。还有带有图像的listview等。这是来自apk的图片。 这是一张图片

第一个问题红色圆圈的记忆是什么?是拉姆吗?还是堆内存? 第二个问题,每个apk的正常大小是多少。它是否比大量内存安全? 第三个问题是我的应用程序的内存是否超过380mb。在某些情况下,它会使我的apk崩溃,并显示错误消息apk未响应。我能为此做点什么吗? 最常见的活动使用包含项目的列表视图:以下是我的部分代码: 我在apk中使用了很多sqlite

var table = db.Query<InventoryPreviewClass>(
    "select * from InventoryPreviewClass where CategoryID =" + 
    Connection.CategoryID + " and InventoryItemName like '%" + 
    etSearchAlwaysOn.Text.ToUpper() + "%'");

mItems = new List<InventoryPreviewClass>();

foreach(var item in table)
{
    mItems.Add(new InventoryPreviewClass() { 
        InventoryItemID = item.InventoryItemID, 
        InventoryItemName = item.InventoryItemName, 
        InventoryItemPrice = item.InventoryItemPrice 
    });
}

MyListViewAdapterInventory adapter = new MyListViewAdapterInventory(this, Resource.Layout.InventoryPreview, mItems);
mlistview.Adapter = adapter;
var table=db.Query(
“从InventoryPreviewClass中选择*,其中CategoryID=“+
Connection.CategoryID+”和类似“%”的InventoryItemName
etSearchAlwaysOn.Text.ToUpper()+“%”;
mItems=新列表();
foreach(表中的var项目)
{
添加(新的InventoryPreviewClass(){
InventoryItemID=item.InventoryItemID,
InventoryItemName=item.InventoryItemName,
InventoryItemPrice=item.InventoryItemPrice
});
}
MyListViewAdapterInventory adapter=新的MyListViewAdapterInventory(这是Resource.Layout.InventoryPreview,mItems);
mlistview.Adapter=适配器;
我标记java也会导致它的相似性

第一个问题红色圆圈的记忆是什么?是拉姆吗?还是堆内存

工作集:指进程使用的总物理内存(RAM)。有关更多详细信息,请参阅:

第二个问题每个apk的正常尺寸是多少。它比大量内存安全吗

Android提供API以获取设备的值,有关详细信息,您可以参考:

第三个问题是我的应用程序的内存是否超过380mb。在某些情况下,它会使我的apk崩溃

正如您所说,您的应用程序具有带有图像的
ListView
,在某些情况下,它会使您的apk崩溃,当您的应用程序一次加载多个图像时,它会占用大量内存,这通常会导致
OutOfMemoryError
,因此我认为您的问题是一个问题您应该更多地关注应用程序中的堆大小,而不是
工作集
。正如安卓所说:

为了允许多个进程运行,Android对每个应用程序分配的堆大小设置了硬限制确切的堆大小限制因设备的总体可用RAM数量而异。如果应用程序已达到堆容量并尝试分配更多内存,系统将抛出OutOfMemoryError

由于我们不知道您是如何将图像加载到listview的,因此这里有一些建议:

  • 建议您实施图像缓存,但无需重新发明轮子,而是专注于应用程序的核心逻辑只需使用已知且可靠的框架来缓存和获取图像,如或。然后您可以使用它在
    列表视图中加载图像,如下所示:

    Picasso.With(context).Load(imageUrl).Into(imageView);
    
  • 尝试实施以提高性能
    列表视图
    。Android示例
  • 确保应用程序中没有内存泄漏
第一个问题红色圆圈的记忆是什么?是拉姆吗?还是堆内存

工作集:指进程使用的总物理内存(RAM)。有关更多详细信息,请参阅:

第二个问题每个apk的正常尺寸是多少。它比大量内存安全吗

Android提供API以获取设备的值,有关详细信息,您可以参考:

第三个问题是我的应用程序的内存是否超过380mb。在某些情况下,它会使我的apk崩溃

正如您所说,您的应用程序具有带有图像的
ListView
,在某些情况下,它会使您的apk崩溃,当您的应用程序一次加载多个图像时,它会占用大量内存,这通常会导致
OutOfMemoryError
,因此我认为您的问题是一个问题您应该更多地关注应用程序中的堆大小,而不是
工作集
。正如安卓所说:

为了允许多个进程运行,Android对每个应用程序分配的堆大小设置了硬限制确切的堆大小限制因设备的总体可用RAM数量而异。如果应用程序已达到堆容量并尝试分配更多内存,系统将抛出OutOfMemoryError

由于我们不知道您是如何将图像加载到listview的,因此这里有一些建议:

  • 建议您实施图像缓存,但无需重新发明轮子,而是专注于应用程序的核心逻辑只需使用已知且可靠的框架来缓存和获取图像,如或。然后您可以使用它在
    列表视图中加载图像,如下所示:

    Picasso.With(context).Load(imageUrl).Into(imageView);
    
  • 尝试实施以提高性能
    列表视图
    。Android示例
  • 确保应用程序中没有内存泄漏

您是否收到Android报告的
ANR
?发生这种情况时,Logcat中会报告什么?您是否收到Android报告的
ANR
?发生这种情况时,Logcat中会报告什么?