这几天在开发公司产品的新版本,有一天打开微信居然弹出了警告框说手机容量已满正在清理空间,这让我百思不得其解,然后就打开设置查看哪个App占了那么多的容量,一看吓了我一跳,居然是我们正在开发的App占用了我8个多G的磁盘空间,因为这几天我都是一直在真机调试,想必这肯定是哪里出现了问题。然后通过下载手机里面真机调试的App包我们可以清晰看到里面的文件,发现了这8个G左右的磁盘占用基本都来此一个出处:沙盒中temp文件夹下的N个命名为stack-logs.xxxxx.index的文件,小的有几十M大的有一百多M,十几个这个的文件加起来那就是几个G了。查阅资料后发现这与Xcode设置有关,然后通过了Google找到问题所在,原来是scheme中的Malloc Stack打勾了。
于是乎做了如下验证,将Mallo Stack取消打勾,删掉App重新调试,跑了几次后再下载包打开,果然在tmp下并没有发现之前的那个文件stack-logs.xxxxx.index,磁盘占用量也处于稳定状态(1~2M),并没有出现暴涨的情况,看来真是这个东西在做鬼。
为了更加认定是这个Malloc Stack在做鬼,于是又将Mallo Stack打钩,问题又出现了,刚装的App磁盘占用瞬间已经暴涨到了80+M,哎呀我的小心脏,查看文件结构后发现又是tmp下的stack-logs.xxxxx.index在做鬼。
此时此刻你还在什么,如果遇见类似问题立马查看你是不是也将Malloc Stack给打勾了。
知道问题的产生,解决了问题,但也要知道这个Malloc Stack的作用,还有产生的这些index文件有什么用途。
其实这个功能也是对于一些crash的操作打印了运行时候的信息,把运行的所有情况都记录在index的这个文件里面,这样当一些发出去外面给其他用户测试的时候就可以记录crash情况,再分析index文件可以定位到哪里出错了。
最后,如果细心的同学在App运行的时候能在控制器看到类似的话语。