如何使用DDMS Heap查看Android应用内存情况

      作为大四毕业生,而且还是二本,加上技术基础不咋样,找工作自然也是辛酸得很。。。最糟糕的情况就是一开始实在是太小看了求职之路的艰辛,整个9月都是无所事事的度过,直到月底面试腾讯被鄙视后才顿然醒悟,意识到自己目前的处境是多么可怕,马上找了几本面试宝典,整天泡在图书馆。。。但迅雷的笔试将我彻底打败,满满的题目,写得我是一点心情也没有,提前一个小时交卷,关键就是笔试还没开始,就让我们填一份基本情况调查表,非常详细,敏锐的意识到,这次笔试肯定要刷一大批人,果然如此,有幸过了笔试这关的同学跟我说,能去面试的人非常少。。。国庆之前在网上大量海投,凡是搭上边的都投,腾讯一面被刷后,接到一家专门做外包的公司的面试通知,办公环境很好,开发氛围感觉很极客,可惜我从腾讯面试中吸取的教训还不够,没有充分发挥自己的优点,依然被刷。。。腾讯面试中我以为是自己基本功不行,于是恶补基本功,这次面试甚至在讲解的时候亲手写代码,但事实证明,关键的地方是我的出发点是错的。腾讯面试中,是从项目开发中自己对项目的理解出发的,但可惜自己并没有彻底想好这个问题,被抓住痛脚了,一时反应不过来,这次就撇开这个,直接就是整个项目流程,关注的是项目实现细节,但依然失败。。。

      这次打击颇大,感觉自己以前做过的东西,学过的东西貌似都没啥用,自己就要失业了。。。国庆后去了一次招聘会,只投了一家,然后没下文了。。。这次是HR面试,但我和她扯技术实现问题,不过采取的是对比式说明,只是谈到界面的设计问题,还亲自解释为啥这样的界面设计会是这么复杂,画图什么的都上阵了,自我介绍还专门讲了个小故事,关于自己是如何虚心好学的。。。接着就是一家物联网公司,这次真的是出乎我意料,我完全省略了自我介绍这些东西,单纯讲一下兴趣爱好而已,笔试的题目也是随便做的,不懂就是不懂,然后在技术面试的时候非常淡定,他问到一点,我就根据这点不断扩展出去,设计模式什么的都搬了出来,优化什么的也拿出来,都是自己这边主动提出来的,他的问题本身是很基础粗显的,整整一个小时的技术面试,不懂的点都是非常爽快的回答不懂,但有给出自己的想法,期间还对自己笔试中没有写的题目进行补充,说明我是如何思考这个问题,但之所以没写,难点是在哪里,我该如何去解决。。。HR的面试也是非常久,一直强调自己的弱点,但都有提出自己的克服方法,隔天他们就发offer过来了,但我有事没有收到,期间还去了一家非常小的公司面试,那时我真的是连死的心都有了。那家公司是在一家民房里面,非常小,开发氛围我也不喜欢,直接就是老板过来面试,没问任何技术性的问题,因为我自己这边也察觉到自己不是他们要的,整个过程我都是面无表情,平淡无奇的应付,结果自然是没有通过。。。

     那时是比说好的时间还早了一个小时,但看了工作环境后,我一直没有推门进去,只是站在窗边,想想自己也是只能去找这样的公司过活了,心里很不是滋味。。。

     收到那家公司的offer后,我心里的石头终于落下来了,觉得这家公司不错,不想再找了,刚好之前报的一家大公司叫我去笔试,我随便应付,反正我觉得自己是不过的,笔试又是提前一个小时交了,所有的简单题回答得非常简洁,都是一两句话就结束了,但竟然过了!隔天的面试也不想去,被同学拉着去,一个小时半的技术面试,我都是面带微笑,采取同样的政策,但这次不懂的问题回答得非常爽快,“不懂”,毫无拖泥带水,反正自己也是不过的,面试官也给了我一个评语:基础有点薄弱,但学习能力很强,通过的概率不大。然后是HR面试,一个小时,我都是面带微笑的和她聊聊方法学,自然哲学的问题,但这些问题的开端都是从我刚才技术面试中无法回答的问题出发,解释我会以怎样的方式弥补这个差距。。。既然面试官都说我通过的概率不大,我自然也是很轻松的应付,回去继续看书了,一周后,我过了面试。。。

     感觉面试什么的都是看RP的,看是否合面试官的眼,当然,自己的表现也是非常重要的,不要太差劲就行。

     说回正题,Android默认情况下分配给一个应用程序的内存大小是16M,这对于涉及到大量图片或者后台的应用程序来说,有点吃力,一个不小心,就会出现OOM的问题,所以,要对应用程序运行过程中的内存使用情况进行测试。

      可以使用Eclipse DDMS的Heap进行测试。

      首先,我们在DDMS的界面的设备选项中找到手机设备,可以看到它里面正在运行的进程:

      如何使用DDMS Heap查看Android应用内存情况

      点一下“Update Heap"图标,然后在Heap选项中查看我们标注的进程的内存使用情况:

      如何使用DDMS Heap查看Android应用内存情况

       点一下"Cause GC", 相当于向虚拟机执行一次GC请求,然后无需再按就可以动态的查看该应用程序的内存使用情况。

       最值得关注的就是”data object“的"Total Size",它决定了是否存在内存泄露的危险。一般情况下,它都是固定在一个稳定的数值范围,如果回落非常大,或者该数值非常大,像是3.55后就会被kill掉,说明该应用程序的内存使用情况不佳,代码结构需要优化。

你可能感兴趣的:(android)