推荐文章 New Blog
Android 堆栈打印方法总结
framework层(java层)try { Log.i(TAG,"--------------NullPointerException-------begin"); throw new NullPointerException(); } catch (NullPointerException e1) { // TODO: handle exception Log.i(TAG, "-------------NullPointerException"); &nbs...Dec. 31, 2017, 4:16 p.m.作者:zachary分类:Android阅读(2426)评论(2)
进程退出时,内存回收流程
在android优化中,有一个是技术是ZRAM,ZRAM是基于swap技术的,前几天同事问了个问题,linux内核中通过kswapd或是直接reclaim一个进程到zram中,如果这个进程被杀,那这个进程对应在ZRAM中的内存会不会先解压然后在free,这个问题以前只是知道不会解压的,具体的流程不是很清楚,用了两天时间搞了明白,现在先上图: 进程退出最终调用的是do_exit函数,然后通过一层层vma,pud,pmd,pte找到所有的page,对应page如果是在swap中的,通过swap_slot_free_notify回调调用swap设备中的notify方法,直接释放swap中的页,如果不是在swap中最终通过调用free_pages_and_swap_cache释放到buddy系统中,这里如果是0阶页通过free_hot_cold_p...July 29, 2017, 8:27 a.m.作者:zachary分类:Linux相关阅读(2327)评论(0)
ZRAM实现原理详解
一、ZRAM的背景我们知道在不论是windows还是linux都有一个交换文件,这个交换文件是放在磁盘上的,对于手机设备也是可以这样做的,但是在移动设备中没有像PC机那样的磁盘,而是使用的是flash,Flash的读写寿命远不如磁盘,所以如果使用交换文件,将大大缩短Flash的寿命。为了不缩短Flash的寿命,程序员想了一个办法就是ZRAM,通过内存存放内存中的数据,只是将数据做了压缩,这样就可以用10M的内存存放20M的数据了,当然这只是一个比方,实际可能压缩的更小,这样同时也不会写入Flash进而影响Flash的寿命。 二、ZRAM的启用内核编译打开CONFIG_SWAP=y CONFIG_CGROUP_MEM_RES_CTLR=y CONFIG_CGROUP_MEM_RES_CTLR_SWAP=y CONFIG_ZRAM=yCONFIG_ZSMALLOC=y启用ZR...Feb. 26, 2017, 10:05 p.m.作者:zachary分类:Android阅读(7453)评论(0)
译:在iOS和Mavericks中处理低内存条件的方式(二)
http://newosxbook.com/articles/MemoryPressure.html,译:冯绍波MemoryStatus和Jetsam 由于移动设备没有交换空间,XNU移植到iOS时,苹果遇到了一个严重的问题。与PC不同,虚拟内存可以“溢出”到外部存储中,由于闪存的限制,移动设备不太容易实现这个机制。因此,内存已经成为一个更加重要也更稀缺的资源. MemoryStatus,这个机制,最初在iOS中引入,是一个负责处理低RAM事件的内核线程。iOS认为唯一的方法就是:为使应用程序能够正常运行,系统应该Jettison(弹出)尽可能多的RAM,即使是意味着杀死其他的应用程序也要释放出内存,这就是iOS所指的jetsam,可以在XNU源代码中看到#if CONFIG_JETSAM编译选项。在OS X中,memorystatus不代表kill,表示的是那些标记为空闲退出的进程,这是...Jan. 2, 2017, 12:30 p.m.作者:zachary分类:iOS阅读(3602)评论(2)
译:在iOS和Mavericks中处理低内存条件的方式(一)
http://newosxbook.com/articles/MemoryPressure.html,译:冯绍波译者语:作者在14年写了mac os&ios的圣经,16年出了第二版,可惜国内现在买的都是14年版本的译本,所以只能从作者的网站上了解一些最新的内容了。1、关于OS X和iOS中的内存压力是虚拟内存管理的一个非常重要的方面,在我的书中已经探讨了一点。虽然在书中我提到了Jetsam 和 memorystatus,但是该机制随着时间的推移发生了重大变化,导致最近在Mavericks电脑上引入了一些非常重要的sysctl接口和系统调用。这些新的特性改变是在我为OS X和iOS开发Process Explorer 工具时遇到的,因此我在这里记录他们。并作为本书第12章的附录,当然你也可以自己阅读。你为什么要关心这个?对于物理设备来说,CPU的另一个方面就是物理内存(RAM)。RA...Dec. 31, 2016, 11:24 p.m.作者:zachary分类:iOS阅读(2467)评论(0)
oat文件结构(一)
由于我的nexus 6p手机耗电特别严重,基本上只能用半天,下载了android的源码,不能白下,所以想优化一下。编写了一个应用程序,这个应用程序使用了activitymanagerservice 的隐藏接口forceStopPackage,发现没有权限,通过配置systemuid,还是因为谷歌手机出厂的时候与aosp源码的签名不同,导致无法正常工作。想通过root权限,但是因为selinux的缘故,发现还是有问题,但是又不想关闭selinux。然后想试着更改services.odex直接push到手机中使用,但是将编译好的services.odex文件push到手机中,发现手机起不来了。通过对比手机原来的对应文件,发现只有四个字节不同,如下: 通过修改源代码,编译好services.odex,然后使用二进制编辑工具更改这四个字...Dec. 2, 2016, 9:27 p.m.作者:zachary分类:Android阅读(1763)评论(0)
Android与selinux
前两天写demo的时候碰到一个问题,一个app怎么才能访问proc目录的一个自己新建的节点,下面以/proc/zachary为例。通过把zachary文件访问权限设置为777,还是不能fopen(“/proc/zachary”,”w”),经过一番google,原来是selinux的关系。为了使得app能够访问上面的节点,需要几个步骤,记录下来给需要的同学。1、 获取进程的分类,以com.android.setting为例。将该应用启动,后通过ps –Z获取分类 可以看到这个进程的分类为system_app。2、在file.te中加入type zachary_file, fs_type;用于定义类型,zachary_file就是我们自定义的类型,查看file.te中,linux有很多的类型,包括fs_type, sysfs_type, dev_type, file_typ...Oct. 13, 2016, 1:08 p.m.作者:zachary分类:Android阅读(2267)评论(0)
一个人也能生活
这几天每天早早的起来,自己一个人,没有什么可做的事,有时候显得格外的孤单。没记错的话从大学的时候开始,就经常一个人吃饭,一个人跑步,晚上的时候,还会一个人在操场上边听广播,边散步。现在七年过去了,慢慢变得老了很多,本来就比同龄人感觉要大,现在感觉跟老了。相对同龄人能吃能睡,经常一睡睡一天,而我每天六七个小时,已经算多了,躺在那里睡不着比起来做点别的事更累。一个人,有的时候难免显得孤单一些,吃饭、睡觉、看电影成为了生活的三部曲。有的时候去医院也要一个人,那个时候孤单的感觉就更加能够体会的到了。其实,我也常常在想,为什么不找个女朋友,一起生活一起聊天,那样会不会热闹一点了。转而一想,如果为了让自己变得不在孤单,那样算是爱情吗?更何况,现在的我任然想找一个自己喜欢的人,但是喜欢的人不会就会喜欢我吗?一想到这些,感觉还是算了吧,一个人不是更自由一点吗。生活,不管一个人还是两个人都是生活,除了偶尔感...Aug. 12, 2016, 7:26 a.m.作者:zachary分类:日记阅读(1847)评论(0)
python 压缩模块(zipfile)
这两天分析海量的日志,需要在压缩包里搜索一些文件及字符串,手动解压搜索太慢了,所以特意学了一下python压缩的方法,不过真心的简单,两下作出了想要的效果,不说了,看代码。#encoding=utf8 import zipfile zfile = zipfile.ZipFile("test.zip","r") zfile.printdir() &n...July 29, 2016, 8:16 a.m.作者:zachary分类:python小站阅读(2264)评论(0)
python drag and drop
在公司的时候想要实现一个小工具,工具的一个功能就是要获取到拖到窗体的文件路径,也就是drag and drop 功能。python实现其他的功能都没有问题,只有这个以前没有实现过,借这个机会学习一下。 实现的小插曲,公司电脑上使用的是py2.7,家里的电脑使用的是py3.0,刚才安装wxpython的时候,发现官网上没有python3.0对应的wxpython,泪奔。。。经过一番百度,google,终于找到wxpython作者已经在开始编译py3.0对应的wxpython了,只是没有在官网放出来,有需要的可以在https://wxpython.org/Phoenix/snapshot-builds/ 下载,哦也! 好了废话不说了,demo直接copy网上的,自己实现的带不回来,公司政策,import wx class My...July 15, 2016, 8:22 a.m.作者:zachary分类:python小站阅读(2093)评论(0)