Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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
Android虚拟机内存不足错误_Android_Memory_Memory Management_Dalvik - Fatal编程技术网

Android虚拟机内存不足错误

Android虚拟机内存不足错误,android,memory,memory-management,dalvik,Android,Memory,Memory Management,Dalvik,可能重复: 我已经上下研究了这个问题,但我找不到关于我的具体问题的任何东西。我使用可绘制文件夹中的.PNG文件作为按钮背景。按钮很大(约150p x 150p),使用图像和渐变使其看起来漂亮。按单个.xml文件中定义的按钮后,背景会发生变化。我在google中找到的解决方案似乎是针对名为programmaticly的图像,而不是布局中指定的图像。当我不断地以不同的布局和按钮退出和进入不同的活动时,我最终会出现内存不足错误 04-27 22:18:46.227:E/dalvikvm堆(512):

可能重复:

我已经上下研究了这个问题,但我找不到关于我的具体问题的任何东西。我使用可绘制文件夹中的.PNG文件作为按钮背景。按钮很大(约150p x 150p),使用图像和渐变使其看起来漂亮。按单个.xml文件中定义的按钮后,背景会发生变化。我在google中找到的解决方案似乎是针对名为programmaticly的图像,而不是布局中指定的图像。当我不断地以不同的布局和按钮退出和进入不同的活动时,我最终会出现内存不足错误

04-27 22:18:46.227:E/dalvikvm堆(512):396900字节的外部分配对此进程太大

04-27 22:18:46.427:E/AndroidRuntime(512):原因:java.lang.OutOfMemory错误:位图大小超出VM预算


我的问题是,如果我的图像是在版面中指定的,并且不是通过编程方式添加的,那么如何分配更多内存?

它是立即崩溃,还是在一段时间后崩溃?一些图片不应该使你的应用程序崩溃,即使是大图片。我发现在过去,很多旋转会泄漏内存,直到应用程序弹出;事实上,这是我看到OOM问题最多的地方。如果您遇到同样的问题,那是因为您保留了指向上下文、目录的指针,或者保留了指向视图的指针。

它是立即崩溃,还是在一段时间后崩溃?一些图片不应该使你的应用程序崩溃,即使是大图片。我发现在过去,很多旋转会泄漏内存,直到应用程序弹出;事实上,这是我看到OOM问题最多的地方。如果您遇到同样的问题,那是因为您保留了指向上下文、目录的指针,或者保留了指向视图的指针。

以下内容有助于找出消耗内存的原因:

当您得到OOM异常时,添加并转储堆。用于转储堆。在此之后,使用转换文件,并使用检查生成的文件


请注意UncaughtExceptionHandler中的包装异常,有时OOM异常会包装在RuntimeException中。

以下内容有助于找出占用内存的原因:

当您得到OOM异常时,添加并转储堆。用于转储堆。在此之后,使用转换文件,并使用检查生成的文件


请注意UncaughtExceptionHandler中的包装异常,有时OOM异常会包装在RuntimeException中。

如果在应用程序中导航时创建了同一活动的多个实例,这可能会造成问题。使用SINGLE_TOP或SINGLE_任务标志修复此问题。不过请注意,Android中的SINGLE_TOP功能似乎存在缺陷。您需要将您的活动声明为SINLGE_TOP,并使用SINLGE_TOP标志启动活动。以下是文档:

如果您在应用程序中导航时创建了同一活动的多个实例,这可能会造成您的问题。使用SINGLE_TOP或SINGLE_任务标志修复此问题。不过请注意,Android中的SINGLE_TOP功能似乎存在缺陷。您需要将您的活动声明为SINLGE_TOP,并使用SINLGE_TOP标志启动活动。以下是文档:

遵循如何高效地显示位图,

遵循如何高效地显示位图,

您也有大图像背景吗?150px 150px的图像没有那么大。150*150*4(假设32位位图为每像素4字节)=90000字节,远小于396900字节。是否尝试使用位图。isrecycled()每个屏幕上有6个这样的图像,我的背景是简单的十六进制颜色,根本没有大图像。在我的桌面上,如果我右键点击我的一个.PNG文件,它会显示它是40KB的。当我删除此按钮图像时,我没有任何问题。这个图像是不是太大了?下一个最大的尺寸是20kb你也有大的图像背景吗?150px 150px的图像没有那么大。150*150*4(假设32位位图为每像素4字节)=90000字节,远小于396900字节。是否尝试使用位图。isrecycled()每个屏幕上有6个这样的图像,我的背景是简单的十六进制颜色,根本没有大图像。在我的桌面上,如果我右键点击我的一个.PNG文件,它会显示它是40KB的。当我删除此按钮图像时,我没有任何问题。这个图像是不是太大了?下一个最大的大小是20kb