您好、欢迎来到现金彩票网!
当前位置:红彩会 > 分派程序 >

如何突破24M内存的限制为Android程序分配到更多内存

发布时间:2019-07-07 15:20 来源:未知 编辑:admin

  定义activity运行所在的进程名称。一般情况下,应用的所有组件都运行在为应用创建的默认的进程中,该默认进程的名称应用包名称一致。通过定义application元素的“process”属性可以为所有组件指定一个不同的默认进程。但是任意组件都可以重写默认进程,以便实现多进程操作。

  如果该属性指定名称以“:”开头,则一个新的专属于该应用的进程将会被创建。如果该进程名以小写字母开头,则为该activity提供权限以让其在一个全局的进程中运行。这样会允许多个应用的不同组件共用一个进程,以便节省资源。

  Android是支持多进程的,每个进程的内存使用限制一般为24MB的内存,所以当完成一些很耗费内存的操作如处理高分辨率图片时,需要单独开一个进程来执行该操作(上面的配置可以用来实现该操作)。即便如此,开发者还是不要随意多开进程来耗费用户的资源。(内存限制,有16MB,24MB, 32MB,很老的机型的内存限制会是16MB,这个具体还要再搜索下资料。。)

  另外一些还有一些其他的方式来绕过内存限制,使用更多的资源来完成自己的任务,如下文(有待实践):

  Using either of the two techniques presented above, on a Nexus One, I could easily allocate 300MB for a single foreground process — more than 10 times the default 24 MB limit.

  一个Android的应用最多使用16M的内存,如果要突破这个限制,则要使用c/c++编写JNI,即直接调用底层的函数来处理.linux也是用c/c++来编写的,因此有非常非常多的函数库可以调用.

  Android框架强制每进程24 MB的内存限制。在一些较旧的设备上,例如G1,极限值更低至16 MB。

  此外,Bitmap使用的内存也包含在限制内。对于处理图像的应用程序来说,达到这个极限非常容易,并且可以通过OOM异常来杀死进程:

  这个限制是非常低的。对于像Nexus One这样的具有512MB物理RAM的设备,将前台活动的每进程内存限制设置为RAM的5%是一个愚蠢的错误。但无论如何,这就是事情的方式,我们必须忍受它 - 即。找到如何解决它。

  一种方法是从本机代码分配内存。使用NDK(本地开发工具包)和JNI,可以从C级别分配内存(例如,malloc / free或new / delete),并且这些分配不会计入24 MB限制。确实,从本地代码分配内存并不像从Java那样方便,但它可以用来在RAM中存储大量数据(甚至是图像数据)。

http://m3-ctech.com/fenpaichengxu/579.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有