问题标签 [android-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Activity中的静态可运行
我正在修改我的活动中的以下代码:
到:
这显然是行不通的,因为我们引用了一个非静态变量。
这也不起作用:
那么如何重写我的初始示例以使用静态类而不是匿名内部类(以避免内存泄漏的可能性)?
android - Google Maps V2 和 HTC Wildfire S:内存不足错误
我的应用程序使用谷歌地图 V2。在其他设备上一切正常,但是当我在 HTC Wildfire S 上打开地图活动时,在地图导航几分钟后,我收到此错误:
我的地图上有数百个标记,这可能会使内存饱和?
android - 从 finalize() 调用 recycle() 会导致应用程序崩溃并导致本机崩溃
为了解决在 android 版本 < 3.0 中发生的错误https://code.google.com/p/android/issues/detail?id=8488 - (outOfMemoryError) 我正在尝试创建一个调用回收的包装器对象() 来自它的 finalize()。这样我就确定这个位图被回收了。
PS - 我知道我不能相信 GB 和终结器在每个对象上调用 finalize()。
这是我的代码:
}
但是我不断让本机库崩溃 - bitmap.recycle();" //SYGDEV heap dmalloc error" 我不知道为什么。
日志崩溃是:
android - Android Looper 退出但保持打开的文件/管道
我注意到,每当与Looper
对象一起运行的线程完成(即被Looper.quit()
调用)时,一些文件仍保持打开状态(通常为 3 个文件)。您可以通过运行“ adb shell ls /proc//fd | wc -l ”看到,这是因为MessageQueue
内部Looper
从未被释放,尽管它从未被使用过。只有当我调用 上的finalize()
方法时MessageQueue
,这些文件才会被释放。线程完成后,文件可能会保持打开状态。当这些线程在系统进程中运行时,这会导致问题,因为已经有很多打开的文件,并且我不能超过 1024 文件边界。(顺便说一句,即使我打电话给System.gc()
它也没有敲定MessageQueue
)
无论如何(不使用反射)MessageQueue
调用 finalize 方法?在我看来,即使打开文件的数量很大,GC 也不会自行完成这件事,这就像 Android 中的一个错误。
谢谢
android - 关闭应用程序时未释放内存
故事是这样的:我从 Eclipse 运行我的应用程序,假设它在任务管理器中使用 20 MB 的 RAM。
然后我使用“后退按钮”关闭我的应用程序。
我签入任务管理器并处理我的应用程序已关闭。
现在我再次从手机运行我的应用程序,但现在它将使用 32 MB。
我关闭我的应用程序并从手机再次运行它,它将使用 45 MB 的 RAM,并且每次重新启动都会继续。
每次启动都会增加约 12 MB。
如果我从 Eclipse 运行我的应用程序,它将重置回 20 MB。
我正在使用MyApp存储一些非静态数据和 SQLiteDatabase:
我可以看到,即使我用 back btn 关闭我的应用程序,我的应用程序也将保持在活动进程中。
android - Android-heap:AlertDialog 中的图像占用了巨大的堆内存并且没有释放它
我有一个包含图像的特定片段。单击图像时,我会放大图像并将其显示在带有某些标题的对话框中。
这一切都很好。
在使用 DDMS 时,我看到在打开对话框时堆内存增加了约 4Mb,而在关闭时未释放。
因此这样做几次会占用巨大的堆内存。
基本上我正在寻找一种方法来释放对话框关闭时的内存。
android - 为什么我得到 OutOfMemoryException ?(见下面的简单代码)
在我的示例应用程序中,布局中有一个 ImageView:
图片的尺寸为(宽*高):2288*1712 位图配置默认为:ARGB_8888,所以加载到内存中的图片大小为:2288 * 1712 * 4byte = 15 668 224 byte 的内存限制我设备上的堆是 128 MB(我知道 Runtime.getRuntime().maxMemory() )。
如果我运行程序,我会得到 OutofMemoryException。但为什么?让我们看看下面的日志。15668240字节是可以的,就是我上面计算的。到目前为止没有问题。但是下面的 141014032 字节分配是什么?它从何而来?
主Activity(唯一的Activity)是:
android - What is the memory limitation for JNI in Android?
I heard that there is no memory limitation PER APPLICATION for JNI in Android. Then how can I find the limitation for memory in JNI in Android? I assume it would be relative much larger, of course, still depending on how many applications are running, how much memory has been used in JNI.
I will do some image processing in JNI, and I do not like outofmemory exception. How can I avoid it?
android - android animatorset内存管理,从imageview中释放内存
我有一个重复的 AnimatorSet,它在几个不同的活动中使用一系列全帧图像。我遇到了内存不足的异常,因为图像视图似乎占用了太多内存。
最初,后台的活动仍然让它们的动画循环运行,占用内存。我尝试通过在暂停/恢复时创建和结束动画来进行补救,以便从非前景视图中的动画中回收内存,但我认为我还需要做更多的工作来清除内存中的图像视图。
android - 应用程序可以使用的最大 RAM 量是多少?
我对这个关于Android操作系统的内存管理的问题很好奇,所以我希望能得到一个关于这个话题的非常详细的答案。
我想知道的:
- Android 应用程序(非系统应用程序)可以使用的最大内存量(以MB为单位/占总 RAM 的 百分比)是多少?
- Android版本之间有什么区别吗?
- 设备制造商是否存在差异?
最重要的是:
- 在系统确定应用程序在运行时可以使用多少 RAM(假设每个应用程序的最大内存不是静态数字)时,考虑了什么/取决于什么?
到目前为止我所听到的(直到 2013 年):
- 早期 Android 设备的每个应用程序上限为 16MB
- 后来这个上限增加到 24MB 或 32MB
是什么让我很好奇:
这两个限制都非常低。
我最近刚刚下载了Android 任务管理器来检查我的设备 RAM。我注意到有些应用程序使用大约 40-50 MB 的 RAM,这显然比提到的最大 RAM 使用量(比如 32 MB)要多。那么,Android 是如何确定应用程序可以使用多少 RAM 的呢?应用程序怎么可能超过这个限制?
此外,我注意到我的一些应用程序在使用大约 30-40 兆字节时崩溃(被系统杀死?)并出现OutOfMemoryException 。另一方面,一段时间后(可能由于内存泄漏),我的手机上运行的应用程序使用100 MB 或更多内存,这些应用程序不会崩溃或被杀死。因此,在确定可以节省多少 RAM 时,显然还取决于应用程序本身。这怎么可能?(我使用 768 MB RAM 的 HTC One S 进行了测试)
免责声明:我不以任何方式隶属于 Android 任务管理器应用程序。