Android工作时需要多大电视机内存多大合适

09:41 提问
memory占用多大内存再算合格
最近在做一个商城,开发工作基本已经完成了。但是在界面多次调转之后(同时开了很多界面,没有关闭)
发现内存最高达到了240m,最低的时候只打开一个主页(包含四个fragment)也达到了140m。而且目前我也没发现那里有内存泄漏。
请问我这个内存情况还需不需要进行优化。怎么样才算合理的
按赞数排序
不同的手机内存大小不一,为每个进程分配的内存也不一样,同样的程序,我用小米6(6G)运行比荣耀6(3G)运行占用内存大(这里是实验没有理论支撑).我觉得不应该去纠结这个问题,你想解决内存占用过大的问题首先要减小apk的大小,图片大小等,然后再查内存泄漏的问题,内存泄漏问题可集成leakcanary进行检查.
在Android中,一个Process 只能使用16M内存,如果超过了这个限制就会抛出Android Out Of Memory(OOM) 这个异常。 在Android中: 1.一个进程的内存可以由2个部分组成:java 使用内存 ,C 使用内存 ,这两个内存的和必须小于16M,不然就会出现OOM.
不同手机占用的内存大小竟然不一样!!
查看内置架构需要的内存
Google android native设为16M,每个手机厂家出厂设置的默认值不同,可通过测试程序实测
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐手机到底需要多大运行内存才够用?看完你就明白了
对于安卓智能手机来说,运行内存是和处理器一样重要的存在。早期的安卓手机内存只有很小的100M、256M,而如今顶级的安卓旗舰内存已经升级到了8GB。对于普通用户来说,多大的内存才比较合适呢?
回答这个问题之前,先让我们了解一下手机运存是干什么用的。简单来说,相对存储文件、音乐、电影等数据的闪存,内存负责存储正在运行的应用,或者说是存储处理器运算的数据。运存是和处理器沟通的桥梁,它越大意味着你可以同时打开更多的应用保持不卡,反之亦然。搞明白这个之后,相信不用我多说你也知道手机内存肯定是越大越好。但从实用性以及目前智能手机发展状况来看,3GB、4GB、6GB还是8GB内存产品哪个更值得你入手呢?
Android系统升级到7.0之后,它对运存的占用就达到了2GB,这是保证系统可以流畅稳定运行的最低内存标准。从这个角度来看,3GB内存手机肯定是不够用的,开不了几个应用就会变卡。至于4GB小编觉得也已经落伍了,日常用户开启应用的数量基本在5个以上,剩余的一个多GB内存也基本不够用。综合考虑,6GB才是目前智能手机最佳的内存大小。当然,如果你预算充足,8GB是最好的选择。
随着安卓手机功能的增多以及优化,升级到6GB内存已经显得很必要了。其实从今年开始,国产手机厂商也注意到了这一点,以华米OV为首的皮牌已经将自家中高端产品升级到了6GB内存,预计到了下半年6GB内存占比会得到进一步的提升。
本文由 http://www.jinnianduoda.com/ 提供 转载请注明出处
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点Android手机到底需要多大内存?Android手机到底需要多大内存?科技想法百家号Android手机诞生至今10年,发展过程之迅速比起PC市场有过之而不及,硬件上的长足发展让我们使用Android手机的体验越来越好。不过大家也发现Android系统对于手机内存的需求就像个无底洞,给多少用多少,眼下就看见市面几乎不见2GB内存的Android手机,这到底是为什么?究竟多大容量的内存才能满足Android的胃口?Android系统使用内存多,究其原因,这是与Android采用Linux内核有密切关系,而Linux与windows在内存管理有着巨大区别。提到Android的内存管理,我们不得不提起Linux内核,因为Android系统内核就是从Linux内核修改过来的,继承了Linux内核优点以及主题框架,同时Android为了适应移动设备需求,在文件系统、内存管理、进程间通信机智和电源管理方面进行了修改,添加了相关的驱动程序和必要的新功能。Android在很大程度上保留了Linux的基本架构,因此Android系统的内存管理与Linux具有很高相似度。用着Android手机的你会发现,刚开机手机内存就占到一半以上,似乎空闲内存很少,大家就着急地开始狂杀后台进程释放内存,避免内存不够造成卡顿。虽然表面上内存不够用了,但其实这是Linux内存管理的非常优秀特性,Linux会无视物理内存容量,只要你给多大,它就会物尽其用,会把一些常用的数据从闪存上预先写入到内存中,利用内存高速的读写性能提高数据访问性能,间接地提高了我们应用启动、运行速度。但我们常用的Windows系统却不是这样,它只有在需要用到内存的时候才会给对应的进程分配内存,所以你会有一种错觉,Windows不吃内存,而用Linux内核的Android却非常占用内存。所以Android系统占用内存多其实是个好事情,去年手机内存4GB起步,到今年6GB起步,甚至出现8GB内存,Android都将能充分利用起来,发挥了硬件规格提升带来的好处,而Windows将其视为摆设,尽管你插满4根槽32GB内存。这就是为什么我们的2GB内存Android手机,开机只剩500MB空闲,而4GB内存Android手机开机还是只有1.5GB左右的空闲内存,因为其内存管理用得太“精明”了,有多少用多少。Android系统内存究竟是怎么调度的?——垃圾回收机制我们都知道Android上的应用都是基于Java而来,每启动一个应用就会产生相应一个虚拟机,Android对这些dalvik虚拟机内存作出硬性限制,这个限制非常严格,早期Android就限制在32MB,目的是迫使应用程序使用较小内存,让内存常驻更多的进程,提高整个系统响应速度,而且程序启动时候不需要从闪存加载到内存中,启动速度自然提升。但进程申请的空间超过上限阈值时,就会触发“内存杀手”规则,为了保护用户使用体验,只会按顺序销毁优先级较低的进程来释放物理内存,让新加入、高优先级程序获得更多内存。但是一些大型应用程序,比如游戏真的很需要大内存怎么办?随着Android手机硬件疯狂升级,祖传2GB内存已经入不了厅堂,Google取消了32MB硬性要求,放宽上限。同时程序员是有办法绕开整个虚拟机内存限制的,但过程非常复杂,这里就不展开说,主要是利用了Android系统内的native heapsize不受限制特性。那么按照目前我们使用习惯来看,Android系统到底多少GB内存才够用?2008年第一台Android手机HTC Dream G1只有192MB的内存,十年后的今天已经出现了8GB内存的手机,难道40倍的内存增长才能够满足今天的应用需求吗?非也,只是对于Android系统来说内存是多多益善。目前对于不同Android 7.0系统以上手机来说,手机开机后,光是“Android操作系统”、“Android系统”、“系统用户界面”等进程就占用了1.2-2GB内存,所以2GB内存手机必然频繁进行内存回收,进而影响到手机流畅度,所以2GB内存手机越来越少了。三星Galaxy S8手机内存占用情况作为一部智能手机,你不可能只用来打电话、收短信,微信、微博、支付宝等都是相当必要的手机APP,所以我们手机后台都普遍存在十数个应用。下面来看看常见手机APP的内存占用情况。常规手机App对内存占用都在300MB左右,功能特别丰富的可能要到500MB,游戏普遍上1GB。下面让我们来看看不同内存大小手机开机后的剩余内存,加上一些必要的应用内存占用,我们方可得到一个可供参考的内存需求量。目前手机内存需求=Android系统必要+大型游戏+应用后台待机×15=2000MB+1000MB+50MB×15≈3.75GB可见4GB内存对于目前Android系统手机来说必不可少。既然4GB就够了,现在中端机普及6GB,高端上8GB意义何在?非常有意义!因为APP对于内存占用是动态的,其中就包含了一些图片素材,对于1080P分辨率手机就加载1080P素材,而2K就加载2K素材,显然分辨率越高,素材容量越大,当然对内存占用越大。你想想索尼还有4K分辨率的Xperia XZ2 Premium手机,内存越大,系统就不会频繁回收内存,减少CPU占用,提高流畅有莫大帮助。6GB/8GB内存显然更加游刃有余,况且厂商宣传上也好看。不记得“GT 630 4GB”的故事吗?而且内存越大越不一定代表手机性能越好!好了,又到了总结陈词的时候啦。如果你平常就聊聊天、刷刷微博,玩玩《天天爱消除》、《欢乐斗地主》,4GB内存足矣;如果你喜欢玩《绝地求生》、《荒野行动》这类大型游戏,那么4GB内存的Android手机是起步而已。另外关于手机内存,大家都有些疑惑,再来讲一讲题外话。为什么越来越多手机都自带进程管理软件?在内存剩余不多时打开大型程序时会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。比方说你需要运行《绝地求生:刺激战场》这类大型游戏,对于内存占用必然是巨大的,如果你主动关闭一些没用的进程释放内存,可以确保大型游戏更为流畅的运行。但是正常情况下你是不需要去管它,由Android系统的内存管理模块自动管理即可。内存里这么多进程待着,不会更加耗电吗?Google早就考虑到这一点,当应用被切换到后台时,只会冻结它切换前最后一刻的运行状态,此时不会再消耗CPU资源,只有那种后台继续执行任务的应用才会消耗资源,比方说是你在后台播放音乐、导航之类的。因此这个设计本来就是为了适应手机多应用切换的,当你切换回程序时,不必再次加载界面资源,启动速度更快,体验更好。本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。科技想法百家号最近更新:简介:网络科技农业科技业界新闻数码科技知识作者最新文章相关文章Android Studio 设置内存大小及原理
http://www.cnblogs.com/justinzhang/p/4274985.html
http://tsroad.lofter.com/post/63ae
Android studio 1.0.2默认最大内存是750M,这样跑起来非常的卡,难以忍受,机器又不是固态硬盘,最后发现,这个默认值是可以修改的,在android studio目录下找到:studio64.exe.vmoptions文件,绿色部分为修改的参数(-Xmx1050m),将默认参数修改为1050MB,这样跑起来就非常流畅了,如果觉得还是不够流畅,可以改得更高:
-XX:MaxPermSize=350m
-XX:ReservedCodeCacheSize=96m
-Dsun.io.useCanonCaches=false
-Djava.net.preferIPv4Stack=true
-Djna.nosys=true
-Djna.boot.library.path=
-Djna.debug_load=true
-Djna.debug_load.jna=true
-Djsse.enableSNIExtension=false
-XX:+UseCodeCacheFlushing
-XX:+UseConcMarkSweepGC
-XX:SoftRefLRUPolicyMSPerMB=50
-Didea.platform.prefix=AndroidStudio
-Didea.paths.selector=AndroidStudio
mac系统下在Android studio包内容中的contents-bin-studio.vmoptions
如果这个设置没有生效,在 File-&Ivalidate Caches中,选择 Ivalidate and Restart就可以生效了:
最后,在资源管理器中可以看到,studio64.exe的内存占有瞬间涨到了1GB以上。
————————————————————————————————————————————
从AndroidStudio的启动参数了解到的下JVM的一些东西(内存使用,JIT等)
如果你使用AndroidStudio经常觉得很卡,那有可能是因为系统给AS分配的内存不够的原因。打开/Applications/Android Studio.app/Contents/bin/studio.vmoptions (Mac),可以看到有以下配置:
-Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=96m -XX:+UseCompressedOops
这些参数分别是什么意思呢?
The -Xms option sets the initial and minimum Java heap size. The Java heap (the “heap”) is the part of the memory where blocks of memory are allocated to objects and freed during garbage collection.
就是JVM启动的起始堆内存,堆内存是分配给对象的内存。这里我把它改成了512m
This option sets the maximum Java heap size.
也就是AndroidStudio能使用的最大heap内存,这里我改成了2048m
这两个参数都是-X开头的,表示非标准的参数。什么叫非标准的呢?我们知道JVM有很多个实现,Oracle的,OpenJDK等等,这里的-X参数,是Oracle的JVM实现使用的,OpenJDK不一定能使用,也就是没有将这些参数标准化,让所有的JVM实现都能使用。
-XX:MaxPermSize=350m
这个参数指定最大的Permanent generation大小。
Permanent Generation (non-heap): The pool containing all the reflective data of the virtual machine itself, such as class and method objects. With Java VMs that use class data sharing, this generation is divided into read-only and read-write areas.
可知,Permanent Generation也是一块内存区域,跟heap不同,它里面存放的事类本身(不是对象),以及方法,一些固定的字符串等等。更多关于
-XX:ReservedCodeCacheSize=90m
ReservedCodeCacheSize (and InitialCodeCacheSize) is an option for the (just-in-time) compiler of the Java Hotspot VM. Basically it sets the maximum size for the compiler's code cache.
设置JIT java compiler在compile的时候的最大代码缓存。简单地说就是JIT(Just In Time)编译器在编译代码的时候,需要缓存一些东西,这个参数指定最多能使用多大内存来缓存这些东西。
什么叫JIT呢?看:
In computing, just-in-time compilation (JIT), also known as dynamic translation, is compilation done during execution of a program – at run time – rather than prior to execution.Most often this consists of translation to machine code, which is then executed
directly, but can also refer to translation to another format. JIT compilation is a combination of the two traditional approaches to translation to machine code – ahead-of-time compilation (AOT), and interpretation – and combines some advantages and drawbacks
of both.[1] Roughly, JIT compilation combines the speed of compiled code with the flexibility of interpretation, with the overhead of an interpreter and the additional overhead of compiling (not just interpreting). JIT compilation is a form of dynamic compilation,
and allows adaptive optimization such as dynamic recompilation – thus in principle JIT compilation can yield faster execution than static compilation. Interpretation and JIT compilation are particularly suited for dynamic programming languages, as the runtime
system can handle late-bound data types and enforce security guarantees.
我们知道编程语言分两种: - 编译型,先将人写的代码整个编译成汇编语言或机器语言,一条一条代码然后执行。 - 解释型,不需要编译,将人写的代码一条一条拿过来一次执行,先取一条,执行,完了再取下一条,然后在执行。
而对于Java来说,这个情况就比较特殊了,因为在Java这里,JVM先是将Java代码整个编译成bytecode,然后在JVM内部再一条一条执行bytecode代码。你说它是编译型的吧,bytecode又不用编译成机器代码,二是一条条bytecode一次执行。你说它是解释型的吧,它又有一个编译的过程。对于Java到底是编译型还是解释型到现在也没有一个定论。不过,我们还是可以探讨一下Java的JIT编译技术。
刚刚说了,在bytecode层面,代码是解释执行的。解释型的语言会比较慢,因为它没有办法根据上下文对代码进行优化。而编译型的语言则可以进行优化。Java的JIT技术,就是在bytecode解释执行的时候,它不一定是一条条解释执行的,二是取一段代码,编译成机器代码,然后执行,这样的话就有了上下文,可以对代码进行优化了,所以执行速度也会更快。
可见,JIT技术结合了编译型(速度更快)和解释型语言(代码更灵活)二者的优势。对于动态语言的执行来说,是一个非常大的优势。
-XX:+UseCompressedOops
这个参数允许系统将代码里面的引用(reference)类型用32位存储,同时却能够让引用能够使用64位的内存大小。
我们知道现代的机器基本都是64位的,在这种情况下,Java代码里面的reference类型也变成了用64位来存储,这就导致了两个问题:
1. 64位比32为更大,占的内存更多,这是显然的,当然这个问题在整个程序看来根本不显然,因为哪怕系统同时有1000个引用存在,那多出来的内存也就4M,这个不重要,因为现在手机都动不动好几个G,大型服务器就更加不用说了。更重要的是第二点。 2. 相对于内存,CPU的cache就小的可怜了,当reference从32bit变成64bit时,cache里面能存放的reference数量就顿时少了很多。所以64bit的reference对cache是个大问题,于是就有了这个选项,可以允许系统用32bit来存储reference,让cache里面能存放更多的reference,同时又不影响reference的取址范围。至于他们是怎么做到的,我就不得而知了。。。
以上三个参数是以-XX开头的,根据,
Options that are specified with -XX are not stable and are subject to change without notice.
没有更多推荐了,修改Android应用程序的默认最大内存值
Android应用程序的默认最大内存值为16M,有些应用程序可能会出现内存溢出,譬如:
ERROR/AndroidRuntime(264): java.lang.OutOfMemoryError: bitmap
size exceeds VM budget
除了要检查修正代码之外,还可以考虑修改Android应用程序的默认最大内存值。
修改应用程序的默认最大内存有2种方法:
1、修改代码,适用于自己编译烧机:
当应用程序分配内存时,会调用到dalvik/vm/alloc/HeapSource.c中的
dvmTrackExternalAllocation()方法,继而调用到externalAllocPossible()方法,该方法要求当前堆已使用的大小(由currentHeapSize和hs-&externalBytesAllocated构成)加上我们需要再次分配的内存大小不能超过堆的最大内存值,如果超过就会报错。
有两个地方决定了一个堆的最大内存:
1)dalvik/vm/Init.c中的
gDvm.heapSizeMax = 16 * 1024 *
1024;&&& // Spec
says 75% physical mem
2)frameworks/base/core/jni/AndroidRuntime.cpp中的
property_get("dalvik.vm.heapsize", heapsizeOptsBuf+4, "16m");
因此解决办法就是将以上2点中默认的16M改大一点,譬如32M。
2、修改配置文件,适用于烧机后的版本。
修改或添加/system/build.prop中的配置项: dalvik.vm.heapsize=32m
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 gta5多大内存 的文章

 

随机推荐