问题标签 [android-largeheap]
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.
android - 启用 largeHeap 的位图回收
在启用largeHeap
选项之前,我正在处理大型位图,它几乎消耗了应用程序可用的全部内存,并且通过导航回收它并加载新的在几乎可用的完整堆上工作。但是,当某些操作需要更多内存时,应用程序会崩溃。所以我启用largeHeap=true
了更多的内存。
但是这样做有一个意想不到的行为,看起来recycle()
位图的方法大部分时间都不起作用,并且在 58Mb 内存中工作的应用程序(有时超过抛出 a OutOfMemoryException
)现在以指数方式消耗内存并不断增长(现在测试我确实来到了 231Mb 分配的内存),预期的行为是内存管理继续工作并且应用程序不会使用超过 60Mb。
我怎样才能避免这种情况?或者有效地回收位图?
编辑:实际上,我OutOfMemoryError
在设备上分配超过 390Mb 的内存时给出了一个。读取 GC_* 日志显示只有 GC_FOR_ALLOC 有时释放了 3.8Mb,但几乎没有其他 GC 运行释放了一些东西。
android - 如何使用 largeHeap="true" 运行 Android 测试?
我们有一个为平板电脑制作的客户应用程序,我们需要的不仅仅是常规堆,因此我们的应用程序为 AndroidManifest.xml 中的应用程序标签定义了 largeHeap="true" 属性。这工作正常。
但是,当我们在使用 android.test.InstrumentationTestRunner 和 android.test.ActivityInstrumentationTestCase2 的设备上运行测试时,当我们尝试使用超过标准堆时会得到 java.lang.OutOfMemoryError。
我们尝试在测试项目的 AndroidManifest.xml 以及应用项目中设置 largeHeap="true"。
在配置了大堆大小的模拟器上运行测试是可行的。该设置增加了一般最大堆大小,而不是 largeHeap 的限制。这是一种解决方法,但我们也希望在实际设备上运行测试。
有没有办法在具有大堆的设备上运行测试?
android - android:largeHeap="true" 不工作
可能重复:
largeHeap=true 清单标签不起作用?
我放入android:largeHeap="true"
清单文件的应用程序标签并将 minSdk 版本设置为android:minSdkVersion="12"
,android:targetSdkVersion="15"
但它不起作用,我收到错误消息"error: no resource identifier found for attribute 'large heap' in package 'android'
我如何让它工作?
android - Monodroid/Android 在旧设备上使用 android:largeHeap
我在我的应用程序中使用 android:largeHeap 来获取更多内存,因为我在滚动视图中有一个大图像,否则我的应用程序会因内存不足异常而崩溃。
我有 2 台设备,一台装有 Android 4.2 jellybean,另一台装有 Android 2.3 Gingerbread。在 4.2 上 android:largeHeap 工作正常,但在 2.3 上我不能使用它。
有没有办法让这两种设备都满意?感谢帮助。
android - 有什么方法可以在 Manifest 中将 LargeHeap 用于 v3.x 并忽略 2.x?
我很想在 Manifest 中使用Android:LargeHeap="true"选项来获得一些额外的内存(我们正在处理 5+ MB 高分辨率 1980x1200 显示器上的位图,并期望很快会有更大的显示器。
我已经用完了所有正常的技巧来处理Android中位图的糟糕内存处理(即除了尝试祈祷它不会崩溃之外,没有办法知道碎片内存中是否有足够大的洞)。我已经花了数周时间优化、修整和应用其他技巧来最小化内存并防止崩溃。这是 2.x 与 3.x/4.x 中可以完成哪些功能的技巧,但将所有功能都保存在一个应用程序中。无需指出“如何优化位图”——我已经完成了这些并应用了我能做的。
2.x 版本不支持 LargeHeap,我将不同的图像用于在 2.x 中不需要 LargeHeap 选项的低分辨率屏幕。(也没有内存不足的问题)。
当 android:minSdkVersion="8" 时,它根本不会允许 Android:LargeHeap 选项。
有什么方法可以有条件地为 3.x 的系统包含 LargeHeap,而在 2.x 中忽略它?或者如果检测到 3.x,应用程序本身是否会尝试设置 LargeHeap?我找不到任何方法来做到这一点,但也许我忽略了一些技巧。
我也意识到 LargeHeap 相当糟糕,但我们已经没有其他技巧了。理想情况下,以编程方式执行 LargeHeap 会很好,只有在 OnCreate 程序真正需要(并允许)时。
android - 如何增加应用程序的内存
如何增加应用程序的内存?
我有这个错误,我正在尝试应用
largeHeap="true"
但我收到一个错误:
error: No resource identifier found for attribute 'largeHeap' in package 'android'
我的代码:
}
android - 将 BIG Picture 对象转换为 Android 的 Bitmap 对象。
我正在尝试从网络视图中获取图像,但是,当我调用“webView.capturePicture()”时,它会给我带来一个图片对象。在大多数情况下,这足以让我使用以下代码将其转换为位图对象
但在相同情况下,将创建的位图比 android 支持的内存最大。
所以,我需要知道如何在文件中直接将图片对象转换为位图对象(我想这将是一个解决方案),而内存中没有任何位图实例。或者一样。要点是从图片对象创建一个位图,但我不能,因为它太大了。
PS:我不想使用' android:largeHeap="true" '。
因此,如果有人有相同的想法,请告诉我。
谢谢
android - 在android中解码流时保持图像质量
我在 sdcard 上有一张图片,需要在图片视图中显示
问题是解码后,质量似乎变差了。有什么方法可以在保持质量的同时保留记忆吗?
或者,如果我使用更大的图像,是否有任何方法可以通过缩放来保留内存(避免加载太大的位图)?(我需要保持原始图像的大小)
感谢您的帮助。
android - 使用 android:largeHeap="true" 的缺点是什么?
最近我将我的应用程序的最大内存峰值从 100 MB 降低到了 45 MB,我很好奇使用 android:largeHeap="true"除了可能将其他应用程序推出内存之外还有什么缺点?如果大小没有增长到足以证明推出其他应用程序的合理性,这不是一个很好的故障保护措施,例如,如果您的应用程序在一个可能会造成灾难性崩溃的会议上仅使用四天?还是我正在寻找其他一些骗局?
android - 将 largeHeap 设置为 true 有什么好处?
我有一个包含大量类的应用程序,还包括许多库,我正在设置android:largeHeap="true"
,因为我遇到了内存问题,附上了我的清单文件代码。
我不得不问这是一个好习惯吗?请提出使用它的优点和缺点(优点和缺点)。