美文网首页iOS多线程相关
用多线程分析手机卡顿

用多线程分析手机卡顿

作者: silence_xz | 来源:发表于2018-01-14 23:19 被阅读24次

一、线程与进程的前世今生

1.何为进程?

指的是系统中正在运行的一个应用程序!即是一个进程。
例如的打开的QQ、微信,都是一个进程。并且在系统内存中占用资源。


图片1.png

直白了讲,你打开手机上装的一个APP,系统就会在内存中开启一个进程,分配一个内存空间用来运行这个APP。这就是为什么打开APP多了,系统会卡的原因。你手机系统内存3G,例如系统软件占用1G,打开一个QQ占用100M,你打开了类似的APP总大小接近2G时,内存快存不了,不卡才怪呢!你说你没有多打开APP,也会卡?为什么呢,这和另外一个问题有关,线程。

2.哪来的线程?

我们知道进程是在系统内存中运行着的应用程序。打开应用之后,你可能会点击这个按钮播放视频,点击那个按钮下载音乐,这些事情谁去做呢,当然不全是进程去做了,更多时候它会指派小弟去做,这个小弟就是线程。
线程就是为了执行任务而存在的。每个进程都默认有一个小弟(主线程)。然后任务多了,就会去系统内存中申请创建新的小弟。看下图的火狐浏览器就知道了。


图片2.png

通过上图可以看出来,线程越多占用的内存一定不会少,为什么有这么多的线程呢,因为我在火狐浏览器中开了N个标签页,每个标签页都需要一个线程,就相当于你手机上虽然开的进程(应用)少,但是开启的任务多,一样会占用很多的内存。所以你的手机卡,一定是进程中线程占用的内存过大,可运行内存变小了。

so 善待你的手机,少开一些应用,善待你的生活,请远离你的手机!

3.线程的特点
   a.线程中的任务的执行是串行的。

串行,一个接一个的执行,就是一个任务完成之后执行另外一个。
同一时间内,一个线程只能执行一个任务。
因此也可以称作线程是进程中的一条执行路径。


图片3.png

4.什么又是多线程呢?
  a,顾名思义,开启多条线程,可以并行(同时)执行多个任务。
  b,多线程的原理

一个CPU,同时只能执行一个线程,只有一条线程在执行。多线程并发(同时)执行,其实是CUP在多个线程间进行频繁调度,切换的足够快,给用户造成一种同时执行的假象。

  c,执行的方式

1>并行执行,也称为同时执行(如图4)。
其实是CPU在多个线程间不停地切换,因为切换的足够快,看起来像是多个任务同时执行一样。
2>串行执行,一个执行完成之后再执行另外一个。


图片4.png

5.线程的优缺点
  1>优点
   a,可以适当地提高程序的执行效率。

例如只有一个线程,做下载任务时,下载完成之后,才可以做其他操作,如果是多个线程,可以一边下载,一边做其他操作,例如看视频。

   b,可以提高资源的利用率(内存、CPU)。

利用闲置的内存和CPU资源,开启多个线程,执行多个任务。

    c,可以提高用户体验。

将更多耗时的任务分摊给子线程去处理,主线程可以持续进行其他任务。例如用户在下载时,边下载(子线程执行),边浏览其他内容(主线程)。

  2>缺点
    a,开启线程是需要开销的

iOS中一个线程占用内核数据结构2个,栈空间,主线程占用1M,子线程占用512KB,创建一个线程大约90毫秒的时间)。

    b,开启过多线程,会引起系统卡顿,也更耗电。

开启N个线程(很多的线程),会使CUP在多个线程直接频繁的切换,造成机器卡顿,同时也更耗电。

相关文章

网友评论

    本文标题:用多线程分析手机卡顿

    本文链接:https://www.haomeiwen.com/subject/buhxvxtx.html