‘壹’ android内存的相关排查方法
mpsys meminfo 是Android系统提供的查询内存命令,用该命令可以看到:
每个进程占用的物理内存大小
系统内存分布状态,包括
总的可用物理内存 Total RAM
当前可用物理内存 Free RAM
已用物理内存 Used RAM
不可见内存 Lost RAM
比如输入该命令后输出如下日志:
该命令打印的最后一部分,反应系统级别的内存状况:
Total RAM: 1015868 kB
Free RAM: 638914 kB (105418 cached pss + 180168 cached + 353328 free)
Used RAM: 211428 kB (186096 used pss + 8008 buffers + 520 shmem + 16804 slab)
Lost RAM: 165526 kB
Tuning: 96 (large 256), oom 20480 kB, restore limit 6826 kB (high-end-gfx)
里面某些字段的意义需要注意:
mpsys meminfo
OOM Killer(Out Of Memory Killer) 是Linux当中,内存保护机制的一种。当物理内存几乎耗尽而又需要分配新内存时,会杀掉一些优先级低的进程,释放内存。
LowMemoryKiller 是Android的内存保护机制。当物理内存低于阈值,就会杀掉一些优先级低的进程,释放内存。
联系:LowMemoryKiller 用到了 OOM Killer 的评分机制
区别:LowMemoryKiller 是通过阈值触发,OOM Killer 是分配内存失败时触发
评分原理:
oom_adj,代表进程的优先级, 数值越大,优先级越低,越容易被杀。系统分16个级别(取值范围[-16, 15]整数,不连续)
通过 cat /proc/xxx/oom_adj 查看,其中xxx是进程号
oom_score_adj: 在 oom_adj 基础上的评分,取值范围[-1000, 1000]
通过 cat /proc/xxx/oom_score_adj 查看,其中xxx是进程号
阈值查看,以98mv100为例:
cat /sys/mole/lowmemorykiller/parameters/minfree
1024,1536,2048,3072,3584,4096
cat /sys/mole/lowmemorykiller/parameters/adj
0,58,117,176,529,1000
上诉数值表示:可用内存低于 4096 4K 时,杀掉 oom_score_adj>=1000 的应用;可用内存低于 3584 4K 时,杀掉 oom_score_adj>=529 的应用,以此类推。
因此,客户可以通过调整 minfree 的阈值来触发 LowMemoryKiller 更频繁地杀应用,从而为高优先级应用省下内存。
在 mpsys meminfo 中,GPU内存被统计到了 Lost RAM 里面了。
因此,当应用占用GPU内存过高时,不会体现在 Used RAM 里面,而是体现在 Lost RAM 中。反过来,如果发现有问题的时候 Lost RAM 很高,就需要看看GPU内存使用情况了。用以下命令:�
mount -t debugfs debugfs /sys/kernel/debug/
cat /sys/kernel/debug/mali/gpu_memory
130|root@MR820:/ # cat /sys/kernel/debug/mali/gpu_memory
Name (:bytes) pid mali_mem max_mali_mem external_mem ump_mem dma_mem
其中mali_mem列就是应用占用的GPU内存
‘贰’ 最新的 iOS 系统版本分布以及 Android 的版本分布情况如何
最新的ios分布肯定要比最新的安卓5.0或者是安卓5.1分部要广的多,目前最新的安卓五点儿一分布状况,就那种高端机一般现在才推送。
‘叁’ 最新的 iOS 系统版本分布以及 Android 的版本分布情况如何
iOS3月数据统一,iOS8用户占75%
Android 5.0“棒棒糖”2月数据安装比例不足2%
‘肆’ 现在 android 开发 SDK一般选择哪个版本
现在 android 开发 SDK一般选择用最新的SDK版本,这是Google官方强烈建议的。
app能运行的Android版本不是由SDK决定的,是由每一个项目的minSDK决定的。SDK都是向下兼容的。SDK在不断改进中,新的SDK会提供更强大开发工具,而且用4.0的SDK编译的2.1的apk的执行效率会比用2.1的SDK编译的更高。
至于每个app应该用什么 minSDK ,应该根据应用具体的API来,如果app没有用到1.6以上SDK新提供的API,那么用1.6会在提供相同体验下反而会比2.1兼容更多机型.
‘伍’ android整体布局为线性布局,垂直分布,其中分为上下两部分,上方为相对布
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="攻击"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:text="左勾拳"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:text="右勾拳"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:text="逃跑"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/centerBtn"
android:text="大绝招"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
‘陆’ 最新的 iOS 系统版本分布以及 Android 的版本分布情况如何
Android 4.1系统的研发代号是 Jelly Bean(果冻豆),于北京时间6月28日00:30在Google I/O 2012开发者
大会上发布,同时发布的还有Nexus 7平板电脑、Nexus Q媒体串流设备、Google Glass三款硬件产品,并公布了Andriod设备、应用商店、Google+的最新运营数据。[1]
从版本号上看,Jelly Bean并没有很大改变,只是对Ice Cream Sandwich系统的改善,但其中还是有许多令用户兴奋的新功能 。
总的来说 ,Android 4.1担负着“承上启下”的作用。既继承了Android 4.0的基本特性,发扬Holo风格的设计理念,又完善了用户体验, 整合新的Google服务,为Android系统的持续发展提供了新的生命力 。
‘柒’ android怎样获取手机mac
与IP不同,MAC是指连接WIFI使用的无线网卡的物理地址,这个地址是唯一并且不可变更的。从Android手机中当前的系统分布来看是可以正常获取到的。以安卓2.3系统为例,是在设置--关于手机--状态信息进行查看。其他版本的安卓系统查看路径可能会有所变更但变化不大。 另,如果你无法查看到MAC地址,通常也会伴随另一个现像,就是无法连接WIFI,此情况如果你在重启了你的设备并且重新启动了WIFI开关仍未改善,请按故障处理。
‘捌’ 安卓系统有几个版本
Android现在大大小小有十八个版本,分别是:
安卓1.1,安卓1.5,安卓1.6,,安卓2.0,安卓2.1,安卓2.2,安卓 2.3,安卓3.0,安卓3.1,安卓3.2,安卓4.0,安卓4.1,安卓4.2,安卓4.3,安卓4.4,安卓5.0,安卓5.1,安卓6.0。
以下是一些关于Android的发展历史:
2007年11月5日,Google发布了基于Linux平台的开源移动手机平台 --Android。该平台由操作系统、中间件、用户界面和应用软件等组成,号称是首个为移动终端打造的真正的开放的移动开发平台。
2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机 -- T-Mobile G1。该款手机为中国台湾宏达电代工制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率为7.2Mbit/s,并支持Wi-Fi无限局域网络。
Google与开放手机联盟(Open Handset Alliance)合作开发了Android移动开发平台,这个联盟由摩托罗拉、高通、宏达电和T-Moblie、中国移动等在内的30多家移动通讯领域的领军企业组成。Google与运营商、设备制造商、开发商和其他第三方结成了深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
Android作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户从未使用过任何基于Android的移动通讯设备,Google的目标是让移动通讯不依赖于设备甚至平台。处于这个目的,Android将补充而不会代替Google长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发即有用又有吸引力的移动服务,并推广这些产品。
Android系统在国内的发展主要在于针对Android系统的二次开发上,以Android系统源码为基础,再深度定制改版而成的操作系统主要有创新工场投资的点心公司开发的点心操作系统、中国移动的Ophone、联想的乐Phone、阿里云手机操作系统及雷军的小米科技开发的MIUI。