Android应用程序运行内存大小限制

vip*_*lfb 3 android memory-leaks out-of-memory webview

是否可以限制Android应用程序的大小?(在Manifest中说)

案例是:客户希望应用程序不超过20 MB.但是设备中的可用内存是50 MB.该应用程序在其中一个活动中使用Webview,这些活动不断增加大小,从而增加了整体应用程序的大小.因此可能:当不需要webview(已设置为null)和总内存大小> 30 MB时.GC被强制调用?注意:确保其他组件和活动不需要超过5 MB内存.

Com*_*are 6

是否可以限制Android应用程序的大小?(在Manifest中说)

并不是的.应用程序的堆限制由设备决定,而不是应用程序.应用程序唯一能做的就是android:largeHeap请求更大的堆; 没有办法要求小于正常的堆.

另请注意,通过NDK进行的分配不计入堆限制.为此,你完全靠自己.

客户希望应用程序不超过20 MB

欢迎您的客户构建自己的设备或ROM mod,可以强制执行此限制,至少对于Dalvik/ART虚拟机中的分配.

或者,您的客户端不应该使用Android,而是使用其他东西,例如嵌入式Linux,它们可以更好地控制内存的使用方式.

但是设备中的可用内存是50 MB.

设备上可用的系统RAM量并不直接与应用程序的堆限制相关联.

不需要webview时(已设置为null)和总内存大小> 30 MB.GC被强制调用?

欢迎您尝试自己实现.它一般不起作用,但欢迎您实施它.

一旦虚拟机从OS分配内存,它将仅在不再使用该内存时将该内存返回给OS.Dalvik--在Android 4.4及更低版本上使用的虚拟机 - 不会压缩堆,因此即使您可能导致某些内存被垃圾收集,也可能不会减少您的整体堆大小.

另请注意,a所消耗的一些系统RAM WebView涉及底层的WebKit/Blink库.据我所知,当你第一次使用时,它们是动态加载的WebView(这就是为什么你的第一个WebView可能需要花费一些时间才能加载).但是,在流程终止之前,这些代码段可能不会被释放.