`
弧形弹道
  • 浏览: 3874 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android的原理,不需要太多的剩余内存【深度解析】

阅读更多
为甚不用在意剩余内存的大小    

      其实很多人都是把使用其他系统的习惯带过来来了。android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就是android标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是自动关进程的软件。
       到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。所以,论坛上有个更改内存阀值的程序可以有一定改善。
      但改动也可能带来一些问题,取决于值的设定。
      那么,进程管理软件有无必要呢?有的。就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电。我就说说android后台的原理,你就明白了。android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以为什么有的程序切出去重进会到主界面。但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,标签是service。至于广播什么的我就不涉及了。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个android的优点呢?还有一个。为什么android一个应用看起来那么耗内存。大家知道,android上的应用是java,当然需要虚拟机,而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。
      以上这些设计确保了android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。大家不妨按我说的习惯来用用这个系统。祝大家玩机愉快,这系统开十天半个月都没问题,不是windows。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------一下纯属个人yy

以上内容均为转帖过来,至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的yy如下
1.大程序A已经开启,占用70%内存,如果再想运行一个B,需要50%的内存,则就需要一个将A从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿
2.A\B\C\D\E共占用内存80%,运行新程序Z需要20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从A~E这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿
3.也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需要内存的时候系统也会自动释放。
4.不在后台运行的程序(没服务的),即使不杀也不会耗电。在后台运行的(有服务的)程序,如后台放歌,当然会耗电。
5.不是说杀进程没用,不然作者就不会推荐进程管理软件了。哪个带服务耗电哪个后台一直在运行,看服务就能看出来,这样的该杀。
6,以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占cpu,如果你只是切换出去(按小房子而不是退出)那么自然会耗电,因为程序还在运行。


大家看了后对android有更进一步的了解了吗?
大家多多支持,希望看帖能回个帖
分享到:
评论

相关推荐

    Android 解析如何检测获取SDCard内存剩余空间.rar

    Android 解析如何检测获取SDCard内存剩余空间,用到了Environment 类、StatFs 类。SDCard存储卡在 Android 手机上是可以随时插拔的,每次的动作都会引起Android系统ACTION_BROADCAST,本例子将计算出 SDCard 的剩余...

    韩超Android原理培训课件.rar

    这套课件涵盖了Android系统的多个关键组成部分,旨在帮助学习者全面理解Android的工作原理,提升其在Android开发领域的专业技能。 首先,从03《Android的Linux内核与驱动程序.pdf》中,我们可以了解到Android系统是...

    android底层原理课件(500强内部)

    第十四章《Android内核驱动——内存管理》:解析Android内核中的内存分配、释放和管理策略,包括低内存杀手机制和内存泄漏检测,有助于开发者编写高效且内存友好的应用。 第十五章《Android内核驱动——杂项》:...

    Android中内存加载dex

    6. ** 内存管理**:加载.dex文件需要内存资源,Android使用垃圾回收机制来管理内存,防止内存泄漏。当不再需要某个类或方法时,它们会被回收,释放内存。 7. ** 动态加载dex**:除了常规的应用安装流程,Android还...

    android 轻松避免内存溢出

    在Android开发中,内存管理是至关重要的,尤其是处理图片资源时,经常遇到内存溢出(Out Of Memory,简称OOM)的问题。本项目提供了一个在Android 1.6 SDK环境下编写的工具类,旨在帮助开发者有效地避免内存溢出,...

    android 获取cpu使用率, 内存 实时数据

    在Android平台上,获取CPU使用率和内存实时数据是开发者进行性能监控、优化应用或实现系统监控功能的关键步骤。本文将详细介绍如何在Android中获取这些关键信息,并提供相关的代码示例。 首先,我们要理解CPU使用率...

    深入解析ANDROID虚拟机

    分别讲解了android系统基础知识,android系统的结构和核心框架,Java虚拟机和Dalvik虚拟机的知识,实现程序编译和调试,Dalvik的运作流程,DEX优化和安全管理,Android虚拟机生命周期的管理和内存分配策略,...

    android 解析 excel 文件

    在Android平台上,解析Excel文件是一项常见的任务,尤其在数据处理、报表展示或者用户交互中。本文将详细讲解如何在Android应用中实现Excel文件的解析,主要聚焦于使用JXL库进行处理。 首先,JXL是一个Java库,专门...

    Android中获取系统内存信息以及进程信息

    在Android系统中,开发者可以通过Android提供的API来获取系统的内存信息以及正在运行的进程状态。这一功能主要涉及到`ActivityManager`类的使用。`ActivityManager`是Android SDK中的一个关键组件,它提供了对系统...

    胡凯 - Android内存优化之5R法则

    在Android中,常见的资源包括文件描述符、网络连接、数据库连接等,这些资源如果不及时释放,将会导致内存泄漏,影响应用性能甚至造成应用崩溃。因此,开发者需要在资源使用完毕后,通过try-finally语句或try-with-...

    Android截屏以及解析截屏程序源代码

    总的来说,实现不需root的Android截图并将其解析为BMP格式是一项涉及Android系统接口、JNI编程以及图像处理技术的任务。通过理解Android系统的工作原理,熟练掌握C++和Java的混合编程,我们可以创建出自己的截图工具...

    Android解析并显示doc,docx,xls,xlsx文件

    对于Android,由于内存和性能限制,可能需要选择轻量级的解决方案,如docx4j或js-xlsx,它们可以在浏览器环境中运行,适用于Android的Webview。 1. **解析doc和docx文件**: - 使用Apache POI或docx4j,可以读取...

    Android解析XML文件

    本例使用多种方式获取本地XML文件,还有通过url获取XML文件,使用Android内置的PULL解析器对XML文件进行解析,例子是解析我国各个省市。 《Android解析XML文件》博文路径:...

    Android 使用LeakCanary 检测内存泄露

    在Android开发过程中,内存泄露是一个严重的问题,它可能导致应用性能下降、用户界面卡顿甚至应用崩溃。LeakCanary是一款由Square公司开发的强大的内存泄漏检测工具,特别为Android平台设计,可以帮助开发者轻松定位...

    Android ijkplayer的使用解析

    本文将深入解析如何在Android项目中集成并使用ijkplayer。 首先,ijkplayer的核心优势在于其高度优化的编解码能力,支持多种视频和音频格式,包括但不限于MP4、FLV、RTMP、HLS等流媒体协议。这使得开发者可以轻松地...

    Android 底层驱动原理

    【Android系统架构及其驱动研究】 Android系统架构是一个分层的...以上是对Android底层驱动原理的详细解析,涵盖了系统架构、驱动类别、实例分析等多个方面,为Android开发者提供了深入理解硬件与软件交互的基础知识。

    Android系统原理及开发要点详解电子书

    这两者的工作原理、内存管理和性能优化策略是Android开发者必须理解的基础知识。 3. **进程和线程管理**:Android中的进程和线程管理与传统Linux有所不同,书中会讲解Android如何调度进程,如何创建和管理线程,...

    Android 动态解析布局

    在Android开发中,动态解析布局是一项重要的技术,它允许开发者在运行时创建、修改或加载布局资源,提供了更大的灵活性和动态性。动态解析布局的概念基于Android的View和ViewGroup类,以及XML布局文件的解析机制。...

    Android对讲机原理及源码

    这个“Android对讲机原理及源码”项目,旨在提供一个简单的、实用的对讲机应用,用户只需输入对方的IP地址就能进行语音聊天,对于学习和借鉴此类功能的开发极具价值。 首先,我们要理解对讲机功能的核心原理。在...

Global site tag (gtag.js) - Google Analytics