Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
AndroidÓ¦ÓÃÄÚ´æÐ¹Â©µÄ¶¨Î»¡¢·ÖÎöÓë½â¾ö²ßÂÔ
 
 À´Ô´£ºgeek.csdn.net ·¢²¼ÓÚ£º 2016-12-15
  1682  次浏览      27
 

ʲôÊÇÄÚ´æÐ¹Â©

¶ÔÓÚ²»Í¬µÄÓïÑÔÆ½Ì¨À´Ëµ£¬½øÐбê¼Ç»ØÊÕÄÚ´æµÄËã·¨ÊDz»Ò»ÑùµÄ£¬Ïñ Android£¨Java£©Ôò²ÉÓà GC-Root µÄ±ê¼Ç»ØÊÕËã·¨¡£ÏÂÃæÕâÕÅͼ¾ÍչʾÁË Android ÄÚ´æµÄ»ØÊÕ¹ÜÀí²ßÂÔ£¨Í¼À´×ÔGoogle 2011µÄIO´ó»á£©

ͼÖеÄÿ¸öÔ²½Úµã´ú±í¶ÔÏóµÄÄÚ´æ×ÊÔ´£¬¼ýÍ·´ú±í¿É´ï·¾¶¡£µ±Ô²½ÚµãÓë GC Roots ´æÔÚ¿É´ï·¾¶Ê±£¬±íʾµ±Ç°×ÊÔ´Õý±»ÒýÓã¬ÐéÄâ»úÊÇÎÞ·¨¶ÔÆä½øÐлØÊյģ¨ÈçͼÖеĻÆÉ«½Úµã£©¡£·´¹ýÀ´£¬Èç¹ûÔ²½ÚµãÓë GC Roots ²»´æÔÚ¿É´ï·¾¶£¬ÔòÒâζ×ÅÕâ¿é¶ÔÏóµÄÄÚ´æ×ÊÔ´²»ÔÙ±»³ÌÐòÒýÓã¬ÏµÍ³ÐéÄâ»ú¿ÉÒÔÔÚ GC ¹ý³ÌÖн«Æä»ØÊÕµô¡£

ÓÐÁËÉÏÃæµÄÄÚ´æ»ØÊÕµÄÀõ×Ó£¬ÄÇô½ÓÏÂÀ´¾Í¿ÉÒÔ˵˵ʲôÊÇÄÚ´æÐ¹Â©ÁË¡£´Ó¶¨ÒåÉϽ²£¬Android£¨Java£©Æ½Ì¨µÄÄÚ´æÐ¹Â©ÊÇָûÓÐÓõĶÔÏó×ÊÔ´ÈÎÓëGC-Root±£³Ö¿É´ï·¾¶£¬µ¼ÖÂϵͳÎÞ·¨½øÐлØÊÕ¡£¾ÙÒ»¸ö×î¼òµ¥µÄÀõ×Ó£¬ÎÒÃÇÔÚ Activity µÄ onCreate º¯ÊýÖÐ×¢²áÒ»¸ö¹ã²¥½ÓÊÕÕߣ¬µ«ÊÇÔÚ onDestory º¯ÊýÖв¢Ã»ÓÐÖ´Ðз´×¢²á£¬µ± Activity ±» finish µôʱ£¬Activity ¶ÔÏóÒѾ­×ßÍêÁË×ÔÉíµÄÉúÃüÖÜÆÚ£¬Ó¦¸Ã±»×ÊÔ´»ØÊÕÊͷŵô£¬µ«ÓÉÓÚûÓз´×¢²á£¬ ´Ëʱ Activity ºÍ GC-Root ¼äÈÎÈ»Óпɴï·¾¶´æÔÚ£¬µ¼Ö Activity ËäÈ»±»Ïú»Ù£¬µ«ÊÇËùÕ¼ÓõÄÄÚ´æ×ÊÔ´È´ÎÞ·¨±»»ØÊÕµô¡£ÀàËÆµÄÀõ×ÓÆäʵÓкܶ࣬²»Ò»Ò»Àý¾ÙÁË¡£¶ÔÓÚ Android£¨Java£©ÄÚ´æ»ØÊÕ¹ÜÀíÏëÒªÔÙÉîÈëÁ˽âµÄͯЬ£¬¿ÉÒÔ¿´¿´ÏÂÃæ×ÊÔ´£º

ÉîÈëÀí½âJavaÐéÄâ»ú:JVM¸ß¼¶ÌØÐÔÓë×î¼Ñʵ¼ù(µÚ2°æ)

Google IO 2011 Memory management for Android Apps

й©µÄÔ´Í·

Á˽âÍêÄÚ´æÐ¹Â©µÄÀíÂÛ֪ʶºó£¬ÔÙÀ´¹éÀàÒ»ÏÂÄÚ´æÐ¹Â©µÄÔ´Í·¡£ÕâÀïÎÒ½«Æä¹éλÒÔÏÂÈýÀࣺ

×ÔÉí±àÂëÒýÆð

ÓÉÏîÄ¿¿ª·¢ÈËÔ±×ÔÉíµÄ±àÂëÔì³É¡£

µÚÈý·½´úÂëÒýÆð

ÕâÀïµÄµÚÈý·½´úÂë°üº¬Á½ÀࣺµÚÈý·½·Ç¿ªÔ´µÄSDKºÍ¿ªÔ´µÄµÚÈý·½¿ò¼Ü¡£

ϵͳԭÒò

ÓÉ Android ϵͳ×ÔÉíÔì³ÉµÄй©£¬ÈçÏñ WebView ¡¢ InputMethodManager µÈÒýÆðµÄÎÊÌ⣬»¹ÓÐijЩµÚÈý·½ ROM ´æÔÚµÄÎÊÌâ¡£

й©µÄ¶¨Î»

ÄÚ´æÐ¹Â©²»ÏñÉÁÍ˵ÄBUG£¬ÅŲéÆðÀ´Ïà¶ÔÒª±È½ÏÀ§ÄÑЩ£¬±È½Ï¼«¶ËµÄÇé¿öÊǵ±ÄãµÄÓ¦Óà OOM Á˲ŷ¢ÏÖ´æÔÚÄÚ´æÐ¹Â©ÎÊÌ⣬µ½ÁËÕâÖÖÇé¿ö²ÅÈ¥ÅŲ鴦ÀíÎÊÌâµÄ»°£¬¶ÔÓû§µÄÓ°Ïì¾ÍÌ«´óÁË¡£Îª´Ë£¬ÎÒÃÇÄܹ»ÔÚ±àÂëÖо¡Ôç·¢ÏÖµ½ÎÊÌâ¾Í²»ÒªÍϵ½ÉÏÏßÖ®ºó²ÅÈ¥Ìî¿Ó£¬ÏÂÃæ½éÉÜһЩÎұȽϳ£ÓÃÅŲéÄÚ´æÐ¹Â©µÄ¹¤¾ß¡£

¾²Ì¬´úÂë·ÖÎö¹¤¾ß ¡ª¡ª Lint

Lint ÊÇ Android Studio ×Ô´øµÄ¹¤¾ß£¬Ê¹ÓÃ×ËÊÆºÜ¼òµ¥ Analyze -> Inspect Code È»ºóÑ¡ÔñÏë񻃬̾µÄÇøÓò¼´¿É

¶Ô¿ÉÄÜÒýÆðй©µÄ±àÂ룬Lint ¶¼»á½øÐÐÎÂܰÌáʾ¡£

ÕâÀïÖ»ÊÇÅ×שÒýÓñµÄ½éÉÜ Lint £¬Êµ¼ÊÉÏÍæ·¨»¹Óкܶ࣬´ó¼Ò¿ÉÒÔ×ÔÐÐÍØÕ¹Ñ§Ï°¡£³ýÁË Lint Í⣬»¹ÓÐÏñ FindBugs ¡¢ Checkstyle µÈ¾²Ì¬´úÂë·ÖÎö¹¤¾ßÒ²ÊǺܲ»´íµÄ¡£

ÑÏ¿Áģʽ ¡ª¡ª StrictMode

StrictMode ÊÇ Android ϵͳÌṩµÄ API £¬ÔÚ¿ª·¢»·¾³ÏÂÒýÈë¿ÉÒÔ¸üÔçµÄ±©Â¶·¢ÏÖÎÊÌâ¡£¹Ù·½ÎĵµÁ´½ÓÔÚÏÂÃæ£¨ÐèÒª¿ÆÑ§ÉÏÍø£©£º

https://developer.android.com/reference/android/os/StrictMode.html

ÒÔ¹ÙÍøµÄʾÀý´úÂëΪÀõ×Ó£¬Ò»°ã StrictMode Ö»ÔÚ²âÊÔ»·¾³ÏÂÆôÓ㬵½ÁËÉú²ú»·¾³¾Í»á½øÐйرգ¬Í¨³£ÎÒÃǶ¼»á½èÖú BuildConfig.DEBUG À´ÊµÏÖ¡£

ÆôÓà StrictMode ºó£¬ÔÚ¹ýÂËÈÕÖ¾µÄµØ·½¼ÓÉÏ StrictMode µÄ¹ýÂË Tag £¬Èç¹ûÊÖ»úÁ¬½Ó×ŵçÄÔ½øÐпª·¢£¬¶¨ÆÚ¹Û²ìһϠStrictMode Õâ¸ö Tag ϵÄÈÕÖ¾£¬Ò»°ãÄã¿´µ½Ò»´ó¶ÑºìÉ«¸æ¾¯µÄ Log£¬¾ÍÐèÒªºÃºÃÅŲéÒ»ÏÂÊÇ·ñ¸úÄÚ´æÐ¹Â©ÓйØÁË¡£

LeakCanary

Square ¹«Ë¾³öÆ·µÄÄÚ´æ·ÖÎö¹¤¾ß£¬¹Ù·½µØÖ·ÈçÏ£º

https://github.com/square/leakcanary/

LeakCanary ºÍ StrictMode Ò»Ñù£¬ÐèÒªÔÚÏîÄ¿´úÂëÖм¯³É£¬²»¹ý´úÂëÒ²·Ç³£¼òµ¥£¬ÈçϵĹٷ½Ê¾Àý¡£

build.gradle ÒýÈ룬Application ÖмÓÈëÁ½ÈýÐдúÂ룬¼´¿É¸ã¶¨¡£ÒÔÉÏÖ»ÊǼòµ¥µÄÒýÈ룬»¹Óиü¶àʹÓÃ×ËÊÆ½¨ÒéÏêϸÔĶÁËüµÄ Wiki Ï FAQ£º

https://github.com/square/leakcanary/wiki/FAQ

ÎÒ¶ÔʹÓà LeakCanary ÓÐÒÔÏÂÁ½µã¸ÐÊÜ£º

µ±ÄÚ´æÐ¹Â©·¢Éúʱ£¬LeakCanary »áµ¯´°Ìáʾ²¢Éú³É¶ÔÓ¦µÄ¶Ñ´æ´¢ÐÅÏ¢¼Ç¼£¬ÕâÈÃÎÒÃǶÔÒþ±ÎµÄÄÚ´æÐ¹Â©ÎÊÌâÓÐÁ˸ü¼ÓÖ±¹ÛµÄ¸Ð¾õ£¬µ«´Óʵ¼ÊʹÓÃÀ´¿´£¬LeakCanary µÄÿ¸öÌáʾҲ²¢·ÇÊÇÕæÕý´æÔÚÄÚ´æÐ¹Â©ÎÊÌ⣬ҪÏëÈ·¶¨ÊÇ·ñ´æÔÚÎÊÌâÎÒÃÇ»¹ÐèÒª½èÖú MAT À´½øÐÐ×îºóµÄÈ·¶¨¡£

Android ϵͳ±¾Éí¾Í´æÔÚһЩÎÊÌâµ¼ÖÂÓ¦ÓÃÄÚ´æÐ¹Â©£¬LeakCanary µÄ AndroidExcludedRefs Àà°ïÖúÎÒÃÇ´¦ÀíÁ˲»ÉÙÕâÀàÎÊÌâ¡£

Android Memory Monitor

AndroidStudio ÌṩµÄ¹¤¾ß£¬ÓÃÓÚ¼à¿ØÓ¦ÓõÄÄÚ´æÊ¹ÓÃ״̬£¬ÔÚ¿ª·¢ÖÐÒ²ÊǷdz£ÊµÓõŤ¾ß£¬¿ÉÒÔÓÃÀ´´òÓ¡³öÄÚ´æµÄ״̬ÐÅÏ¢¡£

´òÓ¡»ñµÃµÄÄÚ´æÐÅÏ¢ÈçÏ£¬¿ÉÒÔͨ¹ýÓÒÉϽǵÄÂÌÉ«Èý½ÇÐΰ´Å¥È¥·ÖÎöй©µÄ Activity ºÍ Ò»Ð©ÖØ¸´µÄ×Ö·û´®£¬Ä¿Ç°Ö»Ö§³ÖÕâÁ½¸ö£¬Ï£Íû Google ºóÃæÄܹ»¼ÓÈë¸ü¶à¿ÉÑ¡·ÖÎö¹æÔò

ͬÑù£¬ÕâÀïÒ²Ö»ÊÇÅ×שÒýÓñµÄ¼òµ¥½éÉÜ£¬¹ØÓÚËüµÄʹÓÃÔÚ¹Ù·½ÎĵµÒѾ­ËµµÃºÜÏêϸÁË£¬ÐèÒªµÄͯЬ×ÔÐв鿴Ï·½Á´½Ó£¨Ðè¿ÆÑ§ÉÏÍø£©£º

https://developer.android.com/studio/profile/am-hprof.html

Memory Analyzer (MAT)

ÀÏÅÆ×Ó·ÖÎö¹¤¾ß£¬¿ÉÒÔ´Ó http://www.eclipse.org/mat/ ÏÂÔØ»ñµÃ£¬ÍøÉϹØÓÚ MAT ʹÓõÄÎÄÕºö࣬´ó¼Ò¿ÉÒÔ×ÔÐвéÕÒ¡£ÉÏÃæµÄ Android Memory Monitor Éú³ÉµÄ¶Ô´¢´æÐÅÏ¢Îļþ¿ÉÒÔÅäÖà MAT Ò»ÆðÀ´·ÖÎöʹÓã¬ÓÉÓÚ Android Memory Monitor Éú³ÉµÄ hprof Îļþ²»ÊDZê×¼¸ñʽ£¬ËùÒÔÐèÒª×öÒ»ÏÂת»»£¬È»ºóµ¼Èë MAT

È»ºóͨ¹ý OQL Ïȶ¨Î»³öй©µÄ¶ÔÏó

ͨ¹ýÅųý³ýÁËÇ¿ÒýÓÃÖ®ÍâµÄÆäËûÒýÓÃÁ´£¬×îºó·ÖÎöµ½ GC Root µÄλÖÃ

MAT ʹÓÃÆðÀ´Ïà¶Ô·±Ëö£¬µ«²»Ê§Îª¶¨Î»¸ùÔ´ÎÊÌâµÄÀûÆ÷¡£

adb shell ÃüÁî

ʹÓà adb shell dumpsys meminfo [PackageName]£¬¿ÉÒÔ´òÓ¡³öÖ¸¶¨°üÃûµÄÓ¦ÓÃÄÚ´æÐÅÏ¢

ʹÓøÃÃüÁî¿ÉÒÔºÜÖ±¹ÛµÄ¹Û²ìµ½ Activity µÄй©ÎÊÌ⣬ÊÇÎÒÆ½³£·ÖÎö±È½Ï³£ÓõÄÒ»ÖÖ·½Ê½¡£³ýÁËʹÓÃÃüÁîÍ⣬AndroidStudio Ò²ÌṩÁËÏÂÃæµÄ¹¦ÄÜ£¬ºÍʹÓÃÃüÁîÊÇÒ»ÑùЧ¹ûµÄ¡£

Èç¹û¶Ô adb shell ÃüÁî¸ÐÐËȤ£¬¸ü¶àµÄÐÅÏ¢¿ÉÒÔ¿´ÏÂÃæÌṩµÄ×ÊÔ´£º

http://adbshell.com/

https://github.com/mzlogin/awesome-adb

ÒÔÉϾÍÊÇÎÒÔÚ×öÄÚ´æÐ¹Â©·ÖÎöµÄʱºò»áÓõ½µÄ¹¤¾ß£¬Í¨³£¶¼ÊǽáºÏÆðÀ´Ó㬱Ͼ¹Ã¿¸ö¹¤¾ß¶¼ÓÐÓÅȱµã£¬Í¨¹ýʹÓöà¸ö¹¤¾ß»¥²¹·ÖÎöÎÊÌâ¿ÉÒÔ¼«´óµÄÌá¸ßÎÒÃǵÄЧÂʺÍ×îÖÕÈ¡µÃµÄЧ¹û¡£

й©µÄ½â¾ö²ßÂÔ

ÁÄÍ깤¾ß£¬×îºóÀ´Ì¸Ì¸ÄÚ´æÐ¹Â©ÎÊÌâµÄ½â¾ö²ßÂÔ¡£ÎÒ°ÑËü×ܽáΪÒÔÏÂÈýµã£º

Íê³ÉÐèÇó¹¦ÄÜ¿ª·¢ºó£¬ÔÙÈ¥ÓÅ»¯ÄÚ´æÐ¹Â©ÎÊÌ⣻

й©ԴÓжദʱ£¬ºËÐŦÄܲúÉúµÄй©ÓÅÏÈ´¦Àí£¬Óû§Ê¹ÓÃÆµ·±µÄ¹¦ÄÜÒýÆðµÄй©ÓÅÏÈ´¦Àí£»

´¦Àíй©±ÜÃâÓ°ÏìÔ­ÓеĴúÂëÂß¼­£¬ÓÅ»¯¹ýºó×îºÃÄܹ»ÈòâÊÔͯЬ¹ýÒ»±éÏà¹ØµÄ¹¦ÄÜ£¬±ÜÃâÒýÈëδ֪µÄBUG£»

×ܽá

¶ÔÓÚÈçºÎÔÚ±àÂëÉÏÈ¥½â¾öÄÚ´æÐ¹Â©ÎÊÌâ£¬ÍøÂçÉÏÓÐÌṩÁ˺ܶೡ¾°¼°Æä½â¾ö·½°¸£¬´ó¼Ò¿ÉÒÔ×ÔÐнèÖúËÑË÷ÒýÇæ¡£Í¨¹ýÕÆÎÕ·ÖÎö·½·¨ºÍ¶Ôй©³¡¾°¼°Æä½â¾ö·½°¸µÄ»ýÀÛ£¬ÏàÐÅ´ó¼Ò´¦ÀíÄÚ´æÐ¹Â©ÎÊÌâÊÇÓÎÈÐÓÐÓàµÄ¡£µ±È»£¬Ò²²¢²»ÊÇËùÓÐÄÚ´æÐ¹Â©ÎÊÌâÎÒÃǶ¼Äܹ»½øÐд¦Àí£¬¾ÍÀýÈçµÚ¶þÕ½ÚÌáµ½µÄй©ԴͷÊÇÓɵÚÈý·½´úÂëÒýÆðʱ£¬ÎÒÃǾÍÏÔµÃÎÞÄÜΪÁ¦ÁË¡£×î½üÔÚÅŲéµÄ¹ý³ÌÖоͷ¢ÏÖ²»ÉÙµÚÈý·½ SDK ´æÔÚй©ÎÊÌ⣬ÓöÉÏÕâÖÖÇé¿ö¾ÍµÃÕÒÕÒ¿ÉÌæ´úµÄ SDK ½øÐиü»»ÁË¡£ÒÔÉϾÍÊÇÎÒ×öÄÚ´æÐ¹Â©·ÖÎöµÄһЩÐĵÃ×ܽᣬÈç¹ûÓдíÎóºÍ²»×㣬»¹Çë´ó¼ÒÖ¸³ö¡£

   
1682 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ