`
liujianguangaaa
  • 浏览: 235194 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

android的原理,不需要太多的剩余内存

阅读更多

不用在意剩余内存的大小。其实很多人都是把使用其他系统的习惯带过来来了。android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这机制了。其实和java的垃圾回收机制类似,系统有一个规则来回收内存。进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西。当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊。但事实上他并不影响速度。相反加快了下次启动应用的速度。这本来就是android标榜的优势之一,如果人为去关闭进程,没有太大必要。特别是自动关进程的软件。 

      到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候。这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统。所以,论坛上有个更改内存阀值的程序可以有一定改善。 但改动也可能带来一些问题,取决于值的设定。 

      那么,进程管理软件有无必要呢?有的。就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度。但一些小程序,完全可交由系统自己管理。谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电。我就说说 android后台的原理,你就明白了。android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态。所以为什么有的程序切出去重进会到主界面。但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务。服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了。这个在进程管理软件里能看到,标签是service。至于广播什么的我就不涉及了。所以没有带服务的应用在后台是完全不耗电的,没有必要关闭。这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个android的优点呢? 

      还有一个。为什么android一个应用看起来那么耗内存。大家知道,android上的应用是java,当然需要虚拟机,而android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机。这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存。 

      以上这些设计确保了android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现。大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要。大家不妨按我说的习惯来用用这个系统。最后推荐一款进程管理软件,systempanel,market上能搜到,界面友好启动快,功能也不错,用于手动关闭进程很好的软件。 祝大家玩机愉快,这系统开十天半个月都没问题,不是windows。

      至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的理解如下:

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原理培训课件.rar

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

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

    《Android底层原理探析》 Android作为全球最广泛使用的移动操作系统,其底层原理对于开发者来说至关重要。本课程针对500强企业的内部培训需求,深入剖析了Android系统的本质,旨在帮助开发者从底层理解Android的...

    Android编程实现获得内存剩余大小与总大小的方法

    总结起来,Android编程实现获取内存剩余大小与总大小的方法主要涉及`ActivityManager`和系统文件`/proc/meminfo`。通过`ActivityManager`获取的`MemoryInfo`对象可以提供实时的可用内存信息,而通过读取系统文件则能...

    Android中内存加载dex

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

    android 轻松避免内存溢出

    综上所述,处理Android中的图片内存溢出问题需要综合运用多种策略,结合特定场景进行优化。本项目提供的工具类是对此问题的一种解决方案,对于Android开发者来说,理解和应用这些方法,可以显著提升应用的性能和稳定...

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

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

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

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

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

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

    Android系统内存设计

    linux认证:Android系统特质不需要太多剩余内存,其实很多人都是把使用其他系统的习惯带过来来了。android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系。如果你知道java,就能更清楚这...

    Android 使用LeakCanary 检测内存泄露

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

    Android 底层驱动原理

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

    Android对讲机原理及源码

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

    android 不预览拍照 后台拍照

    在Android开发中,有时我们需要实现一些特殊的相机功能,比如不预览的拍照或者后台拍照。这些需求可能出现在一些需要高效能、低资源消耗或者隐私保护的场景。本篇将详细探讨如何实现这样的功能。 首先,要理解“不...

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

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

    android系统原理及开发要点详解

     第1章“Android系统概述”,概述Android系统方面的内容,包括智能手机平台的发展历程、Android系统的特点、Android的3种开发工作,以及Android的2种不同的开发方式。  第2章“Android系统开发综述”,介绍Android...

    Android SD剩余大小的求解及格式化显示

    可以作为开发中的工具函数,封装的很好的求解SD卡剩余大小的方法,及格式化显示的方法。简单好用。

    深入理解android Telephony原理剖析与最佳实践

    《深入理解Android Telephony原理剖析与最佳实践》一书由杨青平撰写,全面解析了Android系统的电话(Telephony)模块的核心概念、工作原理及实战经验。这本书是Android开发者,尤其是那些关注移动通信功能实现的...

    android 将assets 下的文件复制到手机内存中

    在Android开发中,有时我们需要将应用内部的资源文件,如配置文件、数据库文件或静态数据等,复制到手机的外部存储(内存或SD卡)以便于应用运行时使用。这个过程通常涉及到Android的文件系统操作和权限管理。下面将...

    Android内存泄漏案例分析

    首先,案例中提到当连续多次打开应用时,界面出现卡顿,并且动画表现不流畅,这是一个典型的内存泄漏现象。此外,通过LogCat观察到频繁的GC日志,这是垃圾回收器为了释放内存而频繁工作的体现。这通常意味着有对象被...

    访问android 手机内存与存储卡

    综上所述,访问Android手机内存与存储卡涉及到了权限管理、文件操作、生命周期管理等多个方面,开发者需要根据具体需求选择合适的操作方法,并确保兼容不同版本的Android系统。在实际开发中,还要注意遵循最佳实践,...

Global site tag (gtag.js) - Google Analytics