ÕªÒª£º¿ª·¢ÕßÔÚæµÓÚ¹¹½¨¾«ÃÀµÄÓû§½çÃæ»òÍê³ÉеÄÌØÐÔʱ£¬ºÜÈÝÒ×Íü¼ÇÐÔÄÜÏà¹ØµÄÊÂÇé¡£±¾ÎÄ×÷Õ߾ͽâ¾öAndroidÓ¦ÓÃÐÔÄÜÎÊÌâ¸ø³öÁËÈý¸ö·½Ã棬¼´¹ý¶È»æÖÆ¡¢AndroidͼÐÎäÖȾÒÔ¼°Memory LeaksÄÚ´æÐ¹Â©¡£

ǰÑÔ
ÎÞÂÛÄãµÄÓ¦ÓöàôÓд´ÐÂÐÔ¡¢ÓÐÓã¬Èç¹ûËü¿¨µÃÒªÃü£¬»òÕ߷dz£ÏûºÄÄڴ棬ÄÇôÿÈ˽«»áÔ¸ÒâʹÓÃËü¡£
Òò´Ë£¬ÐÔÄܱäµÃÓÈÎªÖØÒª¡£µ±ÄãæµÓÚ¹¹½¨¾«ÃÀµÄÓû§½çÃæ»òÕßÍê³ÉеÄÌØÐÔʱ£¬Äã¿ÉÄÜÈÝÒ×ÍüÈ´µôһЩÐÔÄÜÏà¹ØµÄÊÂÇé¡£
ÕâÒ²ÊÇΪʲôÓÐGoogle PlayµÄÓ¦ÓÃÉóºË»úÖÆµÄÔÒòÖ®Ò»¡£
ÕâÆªÎÄÕÂÖУ¬Äã»á¿´µ½Ã¿¸öAndroid¹¤³ÌʦÐèÒªÁ˽âµÄһЩÐÔÄÜÎÊÌâ¡£Ä㽫»áѧ»áʹÓÃAndroid SDKÌṩµÄ¡¢ÒѰ²×°ÔÚÄãµÄÉ豸ÖеŤ¾ßÀ´²âÊÔÕâЩÎÊÌâÊÇ·ñ·¢ÉúÔÚÄã×Ô¼ºµÄÓ¦ÓÃÖС£
Èç¹ûÔÚÄãµÄÓ¦ÓÃÖз¢ÏÖÁËÒ»¸öÐÔÄÜÎÊÌ⣬Äã¿Ï¶¨»áÏëÐÞ¸´Ëü¡£ÎÒÃÇ»¹»á¿´Ò»¿´ÈçºÎʹÓÃAndroid SDK ¹¤¾ßÀ´»ñÈ¡¸ü¶à¹ØÓÚÄÇЩûÓи²¸Çµ½µÄÐÔÄÜÎÊÌâµÄÏà¹ØÐÅÏ¢¡£Ò»µ©ÄãÓÐÁËÕâЩÐÅÏ¢£¬Ä㽫»á¶ÔÈçºÎÌáÉýÓ¦ÓÃÐÔÄÜÓÐÒ»¸ö¸üÉî¿ÌµÄÀí½â£¬²¢ÇÒÄܹ»¹¹½¨³öÈÃÓû§Ï²°®µÄApp¡£
1. ¹ý¶È»æÖÆ
²½Öè1 : ÎÊÌâÃèÊö
ÄãÓ¦ÓõÄÓû§½çÃæÊÇÁ¬½ÓÓû§µÄŦ´ø£¬µ«ÊÇ´´½¨Æ¯ÁÁµÄ½çÃæÖ»ÊÇÌôÕ½µÄÆäÖÐÒ»Ãæ£¬Ä㻹ÐèҪȷ±£Óû§½çÃæÁ÷³©µÄÔËÐС£
Ò»¸ö³£¼ûµÄÎÊÌâ¾ÍÊÇÓû§½çÃæ¿¨¶Ù£¬³öÏÖÕâÖÖÇé¿öµÄÔÒò¿ÉÄÜÊÇoverdraw¡£OverdrawÊÇÆÁÄ»ÉϵÄij¸öÏñËØÔÚͬһ֡µÄʱ¼äÄÚ±»»æÖÆÁ˶à´Î¡£
ÀýÈ磬ÏëÏóÒ»ÏÂÒ»¸öÓÐÀ¶É«µÄ±³¾°Îı¾£¬Android²»½ö»á»æÖƶÔÓû§¿É¼ûµÄÀ¶É«ÇøÓò£¬¶øÊÇ»á»æÖÆÕû¸öÀ¶É«µÄ±³¾°ÒÔ¼°ÉÏÃæµÄÎı¾¡£ÕâÒâζ×ÅһЩÏñËØ»á±»Á½´Î»æÖÆ£¬Õâ¾ÍÊǹý¶È»æÖÆ¡£
һЩÈçÉÏÊöÀý×ÓËù˵µÄ¹ý¶È»æÖÆÊ¾ÀýÊDz»¿É±ÜÃâµÄ¡£È»¶ø£¬¹ý¶àµÄ¶à¶È»æÖÆ»áÒý·¢Ã÷ÏÔµÄÐÔÄÜÎÊÌ⣬Òò´ËÄã±ØÐ뽫¹ý¶È»æÖƵĿÉÄÜÐÔ½µµ½×îС¡£
¼ì²âÓ¦ÓÃÖеĹý¶È»æÖÆÏà¶ÔÀ´Ëµ±È½Ï¼òµ¥¡£´óÁ¿µÄ¹ý¶È»æÖÆ»áÒý³öÆäËûÓû§½çÃæÏà¹ØÎÊÌ⣬ÀýÈçÊÓͼ²ã¼¶¹ýÓÚ¸´Ôӵȡ£»ùÓÚÕâЩÔÒò£¬µ±Äã²âÊÔÄãµÄAppµÄÐÔÄÜÎÊÌâʱ£¬´Ó¹ý¶È»æÖÆ¿ªÊ¼ÊÇÒ»¸öÃ÷ÖǵÄÑ¡Ôñ¡£
²½Öè2 : ¼ì²â¹ý¶È»æÖÆ
ºÃÏûÏ¢ÊÇÄãµÄAndroidÉ豸ÉÏÒѾÄÚÖÃÁ˼ì²â¹ý¶È»æÖƵŤ¾ß¡£
Òò´ËÄãÐèÒª×öµÄµÚÒ»²½¾ÍÊǰ²×°ÄãÒª²âÊÔµÄAppµ½ÄãµÄÉ豸ÖС£È»ºó´ò¿ªÉèÖÃÒ³Ãæ£¬Ñ¡Ôñ¿ª·¢Ñ¡ÏDeveloper Options£©->µ÷ÊÔGPU ¹ý¶È»æÖÆ£¨Debug GPU Overdraw£©£¬È»ºóÑ¡Ôñ¡°ÏÔʾ¹ý¶È»æÖÆÇøÓò£¨Show overdraw area£©¡±¡£ÈçÏÂͼËùʾ¡£

Õâ¸ö¹¤¾ßʹÓÃÉ«¿éÀ´´ú±í²»Í¬ÊýÁ¿µÄ¹ý¶È»æÖÆ¡£Ê£ÏµÄÊÂÇé¾ÍÊÇÆô¶¯ÄãÒª²âÊÔµÄÓ¦Óã¬È»ºó¹Û²ìËüµÄ¹ý¶È»æÖÆÇé¿ö¡£

- ûÑÕÉ« : ûÓйý¶È»æÖÆ£¬Ò²¾ÍÊÇ˵һ¸öÏñËØÖ»±»»æÖÆÁËÒ»´Î¡£
-
À¶É« : ¹ý¶È»æÖÆÁËÒ»´Î£¬Ò²¾ÍÊÇÒ»¸öÏñËØµã±»»æÖÆÁËÁ½´Î¡£
-
ÂÌÉ« : ¹ý¶È»æÖÆÁË2´Î. Ò²¾ÍÊÇÒ»¸öÏñËØµã±»»æÖÆÁËÈý´Î£¬Í¨³££¬ÄãÐèÒª¼¯Öо«Á¦ÓÅ»¯¹ý¶È»æÖÆ´ÎÊý´óÓÚµÈÓÚ2´ÎµÄÇé¿ö¡£
-
dzºìÉ« : ¹ý¶È»æÖÆ3´Î¡£ÕâÈ¡¾öÓÚÄãµÄÓ¦Óã¬Ð¡·¶Î§µÄ3´Î¹ý¶È»æÖÆ¿ÉÄÜÊDz»¿É±ÜÃâµÄ£¬µ«ÊÇÈç¹ûÄã¿´µ½ÁËÖеȻòÕß´óÁ¿µÄºìÉ«ÇøÓòÄÇôÄã¾ÍÐèÒª²éÕÒ³öÏÖÕâ¸öÎÊÌâµÄÔÒòÁË¡£
-
ÉîºìÉ« : ¹ý¶È»æÖÆ4´Î£¬ÏñËØµã±»»æÖÆÁË5´Î£¬ÉõÖÁ¸ü¶à´Î¡£³öÏÖÕâÖÖÎÊÌâÄã¾ø±ÆÒªÕÒµ½ÔÒò£¬²¢ÇÒ½â¾öËü¡£

²½Öè3 £º ×îС»¯¹ý¶È»æÖÆ
Ò»µ©Äã·¢ÏÖÁËij¸öÇøÓòÓÐÑÏÖØµÄ¹ý¶È»æÖÆ£¬×î¼òµ¥µÄ·½·¨¾ÍÊÇ´ò¿ªÄãÓ¦ÓõÄxmlÎļþÕÒµ½¹ý¶ÈÖØµþµÄÇøÓò£¬ÌرðÊÇÄÇЩ²»¿É¼ûµÄdrawable¶ÔÏóºÍ±»»æÖÆÔÚÆäËû¿Ø¼þÉϵı³¾°£¬ÒÔ´ËÀ´½µµÍÕâЩµØ·½µÄ¹ý¶È»æÖÆ¡£
ÄãÒ²Ó¦¸Ã²éÕÒÄÇЩ±³¾°ÊôÐÔÉèÖÃΪ°×É«£¬²¢ÇÒËüµÄ¸¸ÊÓͼ±³¾°Ò²ÉèÖÃΪ°×É«µÄÇøÓò¡£ËùÓÐÕâЩ¶¼»áÒýÆðÑÏÖØµÄ¹ý¶È»æÖÆ¡£
AndroidϵͳÄÜ×Ô¶¯µÄ½µµÍһЩ¼òµ¥µÄ¹ý¶È»æÖÆ£¬µ«ÊÇÕâЩ¶ÔÓÚ¸´ÔÓµÄ×Ô¶¨ÒåView²¢Ã»ÓÐʲô¼ÛÖµ£¬ÒòΪAndroid²»»áÖªµÀÄãÈçºÎ»æÖÆÄãµÄÄÚÈÝ¡£
Èç¹ûÄãÔÚAppÖÐʹÓÃÁ˸´ÔÓµÄ×Ô¶¨ÒåView£¬Äã¿ÉÒÔΪʹÓÃclipRectº¯ÊýΪÄãµÄÊÓͼ¶¨Òå¿É»æÖÆÇøÓòµÄ±ß½ç¡£¸üÐÂÏà¹ØÐÅÏ¢¿ÉÒԲο¼official Android documentation¡£
2. Android ͼÐÎäÖȾ
²½Öè1 : ÎÊÌâÃèÊö
ÁíÒ»¸ö³£¼ûµÄÐÔÄÜÎÊÌâ¾ÍÊÇÓ¦ÓõÄÊÓͼ²ã¼¶¡£ÎªÁËäÖȾÿ¸öÊÓͼ£¬Android¶¼»á¾ÀúÕâÈý¸ö½×¶Î :
- ²âÁ¿
-
²¼¾Ö
-
»æÖÆ
»¨ÔÚÕâÈý¸ö½×¶ÎµÄʱ¼äÓëView²ã¼¶ÖеÄViewµÄÊýÁ¿³ÉÕý±È£¬Õâ¾ÍÒâζ׎µµÍAppäÖȾʱ¼äµÄ×î¼òµ¥µÄ·½·¨¾ÍÊÇʶ±ðºÍÒÆ³ýÄÇЩ²¢Ã»ÓÐʲôÂÑÓõÄUIÔªËØ¡£
¼´Ê¹ÔÚÄãµÄÊÓͼ²ã¼¶ÉϵÄËùÓÐView¶¼ÊDZØÐëµÄ£¬²»Í¬µÄ²¼¾Ö·½Ê½Ò²¿ÉÄܶԲâÁ¿¹ý³Ì²úÉúÖØÒªµÄÓ°Ï졣ͨ³£À´Ëµ£¬ÄãµÄÊÓͼ²ã¼¶Ô½É»¨ÔÚ²âÁ¿ÊÓͼµÄʱ¼ä¾ÍÔ½³¤¡£
ÔÚÊÓͼäÖȾÆÚ¼ä£¬Ã¿¸öView¶¼ÒªÏòËüµÄ¸¸ViewÌṩËü×Ô¼ºµÄ³ß´ç¡£Èç¹û¸¸view·¢ÏÖÁËÈÎÒâÒ»¸ö³ß´çÎÊÌ⣬ÄÇôËü»áÇ¿ÖÆÒªÇóËùÓеÄ×ÓÊÓÍ¼ÖØÐ²âÁ¿¡£
¼´Ê¹Ã»ÓдíÎó·¢Éú£¬ÖØÐ²âÁ¿Ò²¿ÉÄܳöÏÖ¡£ÀýÈ磬ΪÁËÕýÈ·µÄ½øÐв¼¾ÖRelativeLayoutͨ³£»á¶ÔËüÃǵÄ×ÓÊÓͼ½øÐÐÁ½´Î²âÁ¿¡£×ÓÊÓͼʹÓÃÁËlayout_weightÊôÐÔµÄLinearLayoutÒ²»á¶ÔËüµÄ×ÓÊÓͼ½øÐÐÁ½´Î²âÁ¿¡£
ÕâЩ¶¼È¡¾öÓÚÄãµÄ²¼¾Ö·½Ê½£¬²âÁ¿ºÍÖØÐ²âÁ¿µÄ´ú¼Û·Ç³£°º¹ó£¬Ëü»áÑÏÖØÓ°ÏìÄãµÄäÖȾËÙ¶È¡£
È·±£ÄãµÄÓû§½çÃæäÖȾÁ÷³©µÄ¹Ø¼ü¾ÍÊÇÒÆ³ýÈκηDZØÐëµÄViewÒÔ¼°¼õÉÙÄãµÄView²ã¼¶¡£
Hierarchy ViewerÊÇÒ»¸öÄܹ»½«ÄãÍêÕûµÄView²ã¼¶¿ÉÊÓ»¯µÄ¹¤¾ß£¬Õâ¸ö¹¤¾ßÄܹ»°ïÖúÄã·¢ÏÖÈßÓàµÄViewÒÔ¼°Ç¶Ì׵IJ¼¾Ö¡£
²½Öè2£ºÊ¹Óà Hierarchy Viewer
ÔÚÎÒÃǽøÒ»²½Á˽âHierarchy Viewer֮ǰ£¬ÄãÐèÒªÖªµÀËüµÄһЩ¹æÔò¡£Ê×ÏÈHierarchy ViewerÖ»ÄÜÓëÕýÔÚÔËÐеÄApp½øÐн»»¥£¬¶ø²»ÊÇÄãµÄÔ´´úÂë¡£Õâ¾ÍÊÇ˵ÄãÐèÒª½«App°²×°µ½ÄãµÄÉ豸»òÕßÄ£ÄâÆ÷ÉÏ¡£
»¹ÓÐÒ»¸ö×îÖØÒªµÄÎÊÌ⣬¾ÍÊÇĬÈÏÇé¿öÏÂHierarchy ViewerÖ»ÄÜÓëÔËÐпª·¢°æAndroidϵͳµÄÉ豸½øÐн»»¥£¨ÒëÕß×¢£º Ò»°ãÀ´Ëµ£¬Ê¹ÓÃÄ£ÄâÆ÷¼´¿É£©¡£Èç¹ûÄãûÓпª·¢É豸£¬ÄÇÄãÐèÒªÌí¼ÓViewServer classµ½ÄãµÄÓ¦ÓÃÖС£
Á˽âÕâЩ֮ºó¾ÍÈÃÎÒÃÇ´ò¿ªAndroid Studio£¬²¢ÇÒÑ¡Ôñ¡±tools¡± -> ¡°Android¡± -> ¡°Android Device Monitor¡±£¬ÈçͼËùʾ¡£

È»ºóµã»÷Hierarchy View°´Å¥£¬ÈçÏÂͼËùʾ¡£

ÆÁÄ»×ó±ßµÄWindows±êÇ©ÏÂÁгöÁËËùÓÐAndroidÉ豸ºÍÄ£ÄâÆ÷¡£Ñ¡ÔñÄãµÄÉ豸ºó£¬Äã»á¿´µ½ÄãÉ豸ÉÏÔËÐеÄËùÓнø³Ì¡£Ñ¡ÖÐÄãÒª¼ì²âµÄ½ø³Ì£¬È»ºóÄã»á¿´µ½Èý¸ö×Ô¶¯¸üеÄÊÓͼ²ã¼¶ÇøÓò¡£
ÕâÈý¸ö´°¿ÚÌṩÁËÊÓͼ²ã¼¶µÄÈý¸ö²»Í¬¿ÉÊÓ»¯Õ¹Ê¾¡£
- Tree View: **** ÊÓͼ²ã¼¶´°¿Ú£¬Ã¿¸ö½Úµã´ú±íÁËÒ»¸öView;
-
Tree Overview: Õû¸öÊÓͼ²ã¼¶µÄËõÂÔ²¼¾Ö;
-
Layout View: µ±Ç°ÊÓͼ²ã¼¶µÄÂÖÀª.
Hierarchy ViewÖÐÓÐÈý¸ö´°¿Ú¡£Èç¹ûÄãÔÚÒ»¸ö´°¿ÚÖÐÑ¡ÔñÁËÒ»¸öView£¬ÄÇôËü»áÔÚÁíÍâÁ½¸öÖиßÁÁÏÔʾ¡£ÄãÄÜͬʱʹÓÃÕâÈý¸ö´°¿Ú²éÕÒView²ã¼¶ÖеÄÈßÓàÊÓͼ¡£

Èç¹ûÄ㲻ȷ¶¨Ò»¸öViewÊÇ·ñÊÇUI½çÃæÖеıØÐëÔªËØ£¬×î¼òµ¥µÄ·½·¨¾ÍÊǵ½Tree View´°¿Úµã»÷Õâ¸ö½Úµã¡£Ä㽫»á¿´µ½¸ÃViewÊÇÈçºÎÏÔʾÔÚÆÁÄ»µÄÔ¤ÀÀ£¬´ËʱÄã¾Í¿ÉÒÔÈ·ÇеØÖªµÀ¸ÃViewÊÇ·ñÊDZØÐëµÄ¡£
µ«ÊǼ´Ê¹Ò»¸öView¶Ô×îÖÕµÄäÖȾЧ¹ûÓй±Ï×Ò²²¢²»Òâζ×ÅËü²»»áÒýÆðÑÏÖØµÄÐÔÄÜÎÊÌâ¡£ÄãÒѾ¿´µ½ÁËÈçºÎͨ¹ýHierarchy ViewerÀ´ÕÒµ½Ã÷ÏÔµÄǶÌײ¼¾Ö£¬µ«ÊÇÈç¹ûÕâÒýÆðµÄÐÔÄÜÎÊÌâ²¢²»ÄÇôÃ÷ÏÔÄØ£¿»òÕß»¹ÓÐÆäËûµÄÔÒòʹµÃ¸ÃÊÓͼäÖȾµÃ·Ç³£Âý£¿
ºÃÏûÏ¢¾ÍÊÇÄ㻹¿ÉÒÔͨ¹ýHierarchy ViewerÀ´ÆÊÎöÿ¸öViewÔÚ²»Í¬µÄäÖȾ½×¶ÎµÄºÄʱ¡£µ±ÐÔÄÜÎÊÌâµÄÔÒò²»ÄÇôÃ÷ÏÔʱ£¬ÕâÊÇÄã·¢ÏÖÎÊÌâµÄÁíһ;¾¶¡£
ϸöÕ½ÚÎÒ½«ÎªÄãչʾÈçºÎͨ¹ýHierarchy ViewerÀ´ÆÊÎöÿ¸öViewµÄäÖȾʱ¼äÀ´ÕÒµ½Ç±·üÔÚÎÊÌâ±íÃæµÄÐÔÄÜÎÊÌâ¡£
²½Öè3 : ½ÚµãµÄÐÔÄÜ·ÖÎö
¶¨Î»ÄãµÄÓû§½çÃæÆ¿¾±µÄ×î¼òµ¥·½·¨¾ÍÊÇÊÕ¼¯Ã¿¸öView·Ö±ðÍê³É²âÁ¿¡¢²¼¾Ö¡¢»æÖƵÄʱ¼ä¡£
Äã²»½ö¿ÉÒÔͨ¹ýHierarchy ViewerÊÕ¼¯ÕâЩÐÅÏ¢£¬Hierarchy Viewer»¹¿ÉÒÔͨË×Ò×¶®µØÏòÄãչʾÕâЩÊý¾Ý£¬Òò´ËÄã¿ÉÒÔͨ¹ýÕâÖÖÐÎʽÀ´ÕÒµ½ÐÔÄÜÎÊÌâ¡£
Hierarchy ViewerĬÈϲ¢²»»áÏÔʾäÖȾʱ¼ä¡£ÄãÐèÒªµ½Tree View´°¿ÚÌí¼ÓÕâ¸öÐÅÏ¢£¬È»ºóÑ¡ÔñÄãÏëÒª²âÊԵĸù½Úµã¡£ÏÂÒ»²½£¬ÔÚHierarchy ViewerÉϵã»÷ÓÉÂÌ¡¢ºì¡¢×ϵÄÈý¸öÔ²ÐÎÉ«¿é×é³ÉµÄ°´Å¥£¬ÈçͼËùʾ¡£

Èý¸öÔ²µãÉ«¿é¾Í»áÏÔʾÔÚÿ¸ö½ÚµãÉÏ£¬´Ó×óµ½ÓÒ£¬ÕâЩԲµã·Ö±ð´ú±í :
- ÓÃÓÚ²âÁ¿µÄʱ¼ä
-
ÓÃÓÚ²¼¾ÖµÄʱ¼ä
-
ÓÃÓÚ»æÖƵÄʱ¼ä
ÿ¸öÔ²µã¶¼ÓÐÑÕÉ«£º
- ÂÌÉ« ´ú±í¸ÃViewµÄäÖȾËÙ¶ÈÖÁÉÙÒª¿ìÓÚÒ»°ëÒÔÉÏµÄÆäËû²ÎÓë²âÊԵĽڵ㡣ÀýÈ磬һ¸öÔÚ²¼¾ÖλÖÃÉϵÄÂÌÉ«µÄÔ²µã´ú±íËüµÄ²¼¾ÖËÙ¶ÈÒª¿ìÓÚ50%ÒÔÉÏµÄÆäËû½Úµã£»
-
»ÆÉ« ´ú±í¸ÃViewÂýÓÚ50%ÒÔÉÏµÄÆäËû½Úµã£»
-
ºìÉ« ´ú±í¸ÃViewµÄäÖȾËÙ¶È±ÈÆäËûËùÓвÎÓë²âÊԵĽڵ㶼Âý¡£

µ±ÊÕ¼¯ÁËÕâЩÊý¾ÝÖ®ºó£¬Äã²»½öÖªµÀÄÄЩViewÐèÒªÓÅ»¯£¬Ä㻹»áÈ·ÇеØÖªµÀÊÇÔÚäÖȾµÄÄĸö½×¶Îµ¼ÖµÄÎÊÌâ¡£
ÄÄЩ»ÆÉ«¡¢ºìÉ«µÄµØ·½¾ÍÊÇÄãÐèÒª¿ªÊ¼ÓÅ»¯µÄµØ·½£¬ÕâЩÐÔÄÜÖ¸±êÓë¸ÃÊÓͼ²ã¼¶ÏÂµÄÆäËûÆÊÎö½ÚµãÒ²ÓйØÏµ¡£»»¾ä»°Ëµ£¬Äã¿Ï¶¨»áÓÐһЩÊÓͼäÖȾµÃ±ÈÆäËûµÄÂý¡£
ÔÚ¿ªÊ¼¸ÄÁ¼ÄãµÄViewÏà¹ØµÄ´úÂë֮ǰ£¬Ãþ×ÅÄãµÄÁ¼ÐÄÎÊÒ»¾ä¸ÃViewäÖȾµÃ±ÈÆäËûÊÓͼÂýÊÇ·ñÓÐÒ»¸öºÏÀíµÄÔÒò£¬Èç¹û´ð°¸ÊÇ·ñ¶¨µÄ£¬ÄÇô¾Í¿ªÊ¼ÄãµÄViewÓÅ»¯Ö®Âðɡ£
3. Memory Leaks ÄÚ´æÐ¹Â©
²½Öè1£ºÎÊÌâÃèÊö
AndroidÊÇÒ»¸ö×Ô¶¯¹ÜÀíÄÚ´æµÄ¿ª·¢»·¾³£¬²»ÒªÈÃÕâ¸ö¾ä»°ÃɱÎÁË£¬ÒòΪÄÚ´æÐ¹Â©ÒÀ¾ÉÊÇ¿ÉÄÜ·¢ÉúµÄ¡£ÕâÊÇÒòΪÀ¬»ø»ØÊÕÆ÷Ö»»áÒÆ³ýÄÇЩ²»¿É´ïµÄ¶ÔÏó¡£Èç¹ûËü²»ÊÇÒ»¸ö²»¿É´ïµÄ¶ÔÏó£¬ÄÇô¸Ã¶ÔÏó¾Í²»»á±»Êͷŵô¡£
ÕâЩ²»¿É´ïµÄ¶ÔÏóÒõ»ê²»É¢£¬¾Û¼¯ÔÚÄãµÄ¶ÑÄÚ´æÖУ¬Õ¼ÓÃAppµÄÄÚ´æ¿Ø¼þ¡£Èç¹ûÄã¼ÌÐøÐ¹Â©¶ÔÏó£¬ÄÇô¿ÉÓõÄÄÚ´æ¿Õ¼ä½«»áÔ½À´Ô½Ð¡£¬GC²Ù×÷¾Í»áƵ·±´¥·¢¡£
ÓÐÁ½¸öÔÒò±íÃ÷ÕâÊÇÒ»¸ö»µÏûÏ¢¡£Ê×ÏÈ£¬GC²Ù×÷ͨ³£²»»áÃ÷ÏÔµØÓ°ÏìÄãµÄAppÐÔÄÜ£¬µ«Êǵ±ÄÚ´æ¿Ø¼þ½ÏСʱ´óÁ¿µÄGC²Ù×÷»áʹÄãµÄApp±äÂý£¬´ËʱUI¾Í²»»áÄÇôÁ÷³©ÁË¡£µÚ¶þÎÊÌâÊÇÒÆ¶¯É豸µÄÄÚ´æ¿Õ¼äÏà¶ÔÀ´Ëµ½ÏС£¬Òò´ËÄÚ´æÐ¹Â©»á¿ìËÙµØÉý¼¶ÎªÄÚ´æÒç³ö£¬µ¼ÖÂÓ¦ÓÃCrash¡£
ÄÚ´æÐ¹Â©ÄÑÒÔ±»¼ì²â³ö¡£¿ÉÄÜÖ»Óе±Óû§¿ªÊ¼±§Ô¹ÄãµÄÓ¦ÓÃʱÄã²ÅÄÜ·¢¾õÄÚ´æÐ¹Â©ÎÊÌâ¡£ÐÒÔ˵ØÊÇ£¬Android SDKÌṩÁËһЩÓÐÓõŤ¾ßÀ´ÈÃÄãÕÒµ½ÕâЩÎÊÌâ¡££¨ÒëÕß×¢ : SquareµÄ¿ªÔ´¿âLeakCanaryÊDzéÕÒÄÚ´æÐ¹Â©µÄÓÅÐ㹤¾ß,Ç¿ÁÒ½¨Òé´ó¼ÒʹÓã©¡£
²½Öè2 : ÄÚ´æ¼àÊÓÆ÷ £¨Memory Monitor£©
Memory MonitorÊÇÒ»¸öÄܹ»ÊµÊ±»ñȡӦÓÃÄÚ´æÊ¹ÓÃÇé¿öµÄ¹¤¾ß¡£ÐèҪעÒâµÄÊÇÕâ¸ö¹¤¾ßÖ»ÄÜ×÷ÓÃÓÚÕýÔÚÔËÐеÄÓ¦Óã¬Òò´ËÈ·±£ÄãµÄÒª²âÊÔµÄÓ¦ÓÃÒѾ°²×°µ½ÄãµÄÉ豸ÖУ¬²¢ÇÒÄãµÄÉ豸ÒѾÁ¬½Óµ½ÄãµÄµçÄÔÉÏ¡£
Memory MonitorÒѾÄÚÖÃÔÚAndroid StudioÖУ¬Òò´ËÄã¿ÉÒÔµã»÷Android StudioµÄµ×²¿µÄ¡±Memory¡±Õâ¸ötabÀ´Çл»µ½ÄÚ´æ¼àÊÓÒ³Ãæ¡£µ±ÄãÇл»µ½¸ÃÒ³ÃæµÄʱºò£¬Memory Monitor¾Í¿ªÊ¼¼Ç¼ÄãµÄÄÚ´æÊ¹ÓÃÇé¿öÁË¡£

Èç¹ûMemory MonitorûÓпªÊ¼¼Ç¼£¬ÄÇôȷ±£ÄãµÄÉ豸ÊÇÒѾ±»Ñ¡ÖеÄ״̬¡£
Èç¹ûMemory MonitorÌáʾNo debuggable applications£¬ÄÇôÄã¿ÉÒÔ´ò¿ªAndroid StudioµÄ¡±Tools¡±²Ëµ¥£¬Ñ¡Ôñ¡±Android¡±£¬È»ºóÈ·±£Ñ¡ÖÐÁËEnable adb integration¡£Õâ¸ö¹¦ÄÜ»¹²»ÊǺÜÎȶ¨£¬ËùÒÔÓÐʱºòÄãÐèÒªÊÖ¶¯Çл»ËüµÄ״̬¡£ÄãÒ²¿ÉÒÔ¶Ï¿ªÉ豸ÓëµçÄÔµÄÁ¬½Ó£¬È»ºóÔÙÖØÁ¬£¬ÕâÑù¿ÉÄܾÍOKÁË¡£
Ò»µ©Memory Monitor¼ì²âµ½ÕýÔÚÔËÐеÄÓ¦Óã¬Ëü¾Í»áÏÔʾÕâ¸öÓ¦ÓõÄÄÚ´æÊ¹ÓÃÇé¿ö¡£ÒÑʹÓõÄÄÚ´æ»á±»±íʾΪÉîÀ¶É«£¬Î´·ÖÅäµÄÄÚ´æÔò»á±äΪdzÀ¶É«¡£
»¨Ò»Ð©Ê±¼äÓëÄãµÄÉ豸½»»¥£¬²¢ÇÒ¹Ø×¢ÄãµÄÄÚ´æÊ¹ÓÃÇé¿ö¡£×îÖÕÒÑ·ÖÅäµÄÄÚ´æ»áÔö³¤£¬Ö±µ½Ã»ÓÐÄÚ´æ¿ÉÓᣴËʱ£¬ÏµÍ³¾Í»áÊÍ·Å´¥·¢GCÊÍ·ÅÄڴ棬µ±Äã¿´µ½ÒÑ·ÖÅäµÄÄÚ´æÃ÷ÏÔµÄϽµÊ±¾Í´ú±íGC²Ù×÷±»´¥·¢ÁË¡£
GCͨ³£Çé¿öÏ»ὫÎÞÓõÄÄÚ´æÊͷŵô£¬µ«Êǵ±Äã¿´µ½AppÔÚ¶Ìʱ¼äÄÚ¿ìËÙÔö³¤»òÕßGC±äµÃ·Ç³£Æµ·±£¬´ËʱÄã¾ÍÐèÒª±¶¼ÓСÐÄÁË£¬Õâ¾ÍÊÇ·¢ÉúÄÚ´æÐ¹Â©µÄÐźţ¡
Èç¹ûÄãͨ¹ýMemory MonitorÀ´×·×ÙÒ»¸ö¿ÉÒɵÄÄÚ´æÐ¹Â©ÎÊÌ⣬Äã¿ÉÄܻῴµ½Androidϵͳ»áΪÄãµÄAppÔö´ó¿ÉÓÃÄڴ棬TODO : ¡£
×îÖÕ£¬Äã¿ÉÄܻῴµ½ÄãµÄAppÏûºÄÁ˷dz£¶àµÄÄÚ´æÒÔÖÁÓÚϵͳÎÞ·¨ÔÙ¸øÄãµÄÓ¦Óøü¶àµÄ¿ÉÓÃÄÚ´æ¡£Èç¹ûÄã¿´µ½ÕâÖÖ³¡¾°£¬ÄÇô˵Ã÷ÄãÔÚÄÚ´æÊ¹ÓÃÉÏ·¸Á˺ÜÑÏÖØµÄ´íÎó¡£
²½Öè3 : Android Device Monitor
ÁíÒ»¸öÄܹ»°ïÖúÄãÊÕ¼¯¸üйØÓÚÄÚ´æÐ¹Â©ÐÅÏ¢ºÍÆäËûÄÚ´æÏà¹ØÎÊÌâµÄ¹¤¾ßÊÇAndroid Device MonitorµÄDDMMS¹¤¾ßϵÄHeap¡£
Heap¹¤¾ßÄܹ»Í¨¹ýÏÔʾϵͳΪÄã·ÖÅäÁ˶àÉÙÄÚ´æÀ´°ïÖúÄãÕï¶ÏÄÚ´æÐ¹Â©ÎÊÌâ¡£ÕýÈçÉÏÃæÌáµ½µÄ£¬Èç¹ûÒÑ·ÖÅäµÄÄÚ´æ²»¶ÏµØÔö³¤£¬ÄÇôÕâÊÇ·¢ÉúÄÚ´æÐ¹Â©µÄÃ÷ÏÔÐźš£
µ«ÊÇÕâ¸ö¹¤¾ß»¹ÌṩÁËÐí¶à¹ØÓÚÄãµÄÓ¦ÓöÑÄÚ´æÊ¹ÓÃÇé¿öµÄÊý¾Ý£¬°üº¬ÄãµÄAppÄÚ·ÖÅäµÄ¸÷ÖÖ¶ÔÏó¡¢·ÖÅäµÄ¶ÔÏóÊýÁ¿ÒÔ¼°ÕâЩ¶ÔÏóÕ¼ÓÃÁ˶àÉٿռ䡣ÕâЩ¶îÍâµÄÐÅÏ¢¶ÔÓÚÄã×·×ÙÄÚ´æÐ¹Â©¼«ÎªÓÐÓá£
Äã¿ÉÒÔÔÚAndroid Device Monitor¹¤¾ßÖÐÑ¡ÔñDDMS£¬ÔÚDevicesÖÐÑ¡ÔñÄãÒª¼ì²âµÄApp¡£È»ºóÑ¡ÔñHeap±êÇ©£¬ÈçͼËùʾ¡£È»ºó»¨Ò»Ð©Ê±¼äÓëÄãµÄApp½øÐн»»¥ÒÔÊÕ¼¯ÄÚ´æÐÅÏ¢¡£ 
heapÊä³öÐÅÏ¢»áÔÚGCʼþÖ®ºó£¬ÒòΪÄã¿ÉÒÔÊÖ¶¯µã»÷Cause GCÀ´´¥·¢GC£¬Ê¹µÃHeapÄÚ´æÊý¾Ý¾¡¿ìµØÏÔʾ³öÀ´¡£
Ò»µ©GCʼþ±»´¥·¢ÁË£¬heap±êǩϾͻá¸üÐÂAppµÄ¶ÑÄÚ´æÊ¹ÓÃÐÅÏ¢£¬ÕâЩÐÅÏ¢»áÔÚÿ´ÎGCʱ¸üС£
×ܽá
ÔÚÕâÆªÎÄÕÂÖУ¬ÎÒÃÇѧϰÁËһЩ¿ª·¢ÖÐ×î³£¼ûµÄÐÔÄÜÎÊÌ⣬¹ý¶È»æÖÆ¡¢ÄÚ´æÐ¹Â©¡¢»ºÂýµÄUIäÖȾ¡£
ÏàÐÅÄãÒÑ¾ÕÆÎÕÁËÈçºÎʹÓù¤¾ßÀ´¼ì²éÕâЩÎÊÌ⣬ÒÔ¼°ÈçºÎ»ñÈ¡¸üеÄÐÅÏ¢À´ÅжÏÄãµÄÓ¦ÓÃÖÐÊÇ·ñ³öÏÖÁËÕâЩÐÔÄÜÎÊÌâ¡£ÄãÓÐÔ½¶àµÄÐÅÏ¢£¬¾ÍÔ½ÈÝÒ××·×Ùµ½ÎÊÌâµÄÔÒò²¢ÇÒÐÞ¸´Ëü¡£ |