Android 系统限制了每一个进程只有一个线程可以刷新 UI ,这个线程称之为 UI 线程或者主线程。 Android 系统 cpu 资源分配,其实就是轮流执行每个线程的指令,资源紧张时,每个线程获取到的 cpu 时间片自然就少 UI 线程获取不到充足的 cpu 资源,UI 绘制效率低,轻则造成帧率下降,页面刷新变慢 重则导致绘制流程完全停止,反馈到用户视角就是卡了
nothingistrue
2022-08-18 17:13:35 +08:00
@orangex #12 CPU 全虚拟化的时候(没开 VT 的 Vmware ),虚拟机跟 JVM 是差不多的,对于宿主机来说,就是个普通应用,这时候不会出现虚拟机内部闲着但是宿主机资源被占用的情况。
开 VT 半虚拟机化的时候,Hyper-V 这边是虚拟机跟宿主机一起调度,只能人为给虚拟机加限额,这时候虚拟机内部的 CPU 跟宿主机 CPU 是一体基本没区别的,也不会出现虚拟机内部闲着但是宿主机资源被占用的情况。其他虚拟化技术可能有出去,但大体是类似的。VT 虚拟化,基本都是在 CPU 的线程调度上入手。
以上仅限于 CPU ,或者也包含 GPU ,内存部分,即使是动态增缩内存,虚拟机都是独占的,分配不好就会出现虚拟机闲置但宿主机不够用的情况。
你在 windows 里面开个 vmware ,在 vmware 里面把性能拉满,你 windows 主机一样会卡。
wangyu17455
2022-08-19 13:20:43 +08:00
举个例子,你的程序覆盖了 home 键默认行为,然后程序卡死了,此时 home 键由你正在运行的程序处理,但是程序无响应,所以对 home 键的一切操作也都无响应,然后你按 home 键就不会回到桌面,界面也不刷新。但是系统其实跑的好好的,别的应用的 service 还是正常运行,比如说你在后台开了 qq 音乐,音乐还是正常播放但是你的屏幕动不了
orangex
2022-08-19 17:14:02 +08:00
14 楼详细解答了 CPU 及内存在不同虚拟化实现下的分配调度情况~ 可能尤为值得楼主记住是“CPU 全虚拟化时,对宿主机来说,就是个普通应用”
第 1 页 / 共 1 页
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。