ä»åç§åå¾æ¶éç®æ³æåºæ¬çè¿è¡æ¹å¼æ¥è¯´ï¼å¤§æ¦å¯ä»¥åæä¸ä¸ªç±»åï¼
1. å¼ç¨è®¡æ°ï¼reference countingï¼ï¼
åºæ¬æè·¯æ¯ä¸ºæ¯ä¸ªå¯¹è±¡å ä¸ä¸ªè®¡æ°å¨ï¼è®°å½æåè¿ä¸ªå¯¹è±¡çå¼ç¨æ°éãæ¯æ¬¡æä¸ä¸ªæ°çå¼ç¨æåè¿ä¸ªå¯¹è±¡ï¼è®¡æ°å¨å ä¸ï¼åä¹æ¯æ¬¡æä¸ä¸ªæåè¿ä¸ªå¯¹è±¡å¼ç¨è¢«ç½®ç©ºæè
æåå
¶ä»å¯¹è±¡ï¼è®¡æ°å¨åä¸ãå½è®¡æ°å¨å为 0 çæ¶åï¼èªå¨å é¤è¿ä¸ªå¯¹è±¡ã
å¼ç¨è®¡æ°çä¼ç¹æ¯ 1ï¼ç¸å¯¹ç®åï¼ä¸éè¦å¤ªå¤è¿è¡æ¶ï¼run-timeï¼çæ¯æï¼å¯ä»¥å¨åçä¸æ¯æ GC çè¯è¨éå®ç°ã2ï¼å¯¹è±¡ä¼å¨æ为åå¾çç¬é´è¢«éæ¾ï¼ä¸ä¼ç»æ£å¸¸ç¨åºçæ§è¡å¸¦æ¥é¢å¤ä¸æãå®çæ»ç©´æ¯å¾ªç¯å¼ç¨ï¼å¯¹è±¡ A å
å«ä¸ä¸ªå¼ç¨æå对象 B ï¼åæ¶å¯¹è±¡ B å
å«ä¸ä¸ªå¼ç¨æå对象 Aï¼è®¡æ°å¨å°±æçäºãå¦å¤ï¼å¼ç¨è®¡æ°å¯¹æ£å¸¸ç¨åºçæ§è¡æ§è½æå½±åï¼æ¯æ¬¡å¼ç¨èµå¼é½è¦æ¹è®¡æ°å¨ï¼ï¼ç¹å«æ¯å¨å¤çº¿ç¨ç¯å¢ä¸ï¼æ¹è®¡æ°å¨è¦å éåæ¥ï¼ã
ç°å¨ä»ç¶ä¸»è¦éç¨å¼ç¨è®¡æ°çä¾åæ Apple ç ARCï¼C++ æ°æ åéç std::shared_ptrã
2. æ è®°-æ¸
æ«ï¼mark-sweepï¼ã
åºæ¬æè·¯æ¯å
æéåé
ï¼çå°æ²¡æ空é²å
åçæ¶åä»å¯åå¨åç¨åºæ ä¸çå¼ç¨åºåï¼éå以对象为èç¹ã以å¼ç¨ä¸ºè¾¹ææçå¾ï¼æææå¯ä»¥è®¿é®å°ç对象æä¸æ è®°ï¼ç¶åæ¸
æ«ä¸éå
å空é´ï¼æææ没æ è®°ç对象éæ¾ã
æ è®°-æ¸
æ«æ²¡ææ æ³å¤ç循ç¯å¼ç¨çé®é¢ï¼ä¸è§¦å GC æ¶ä¹ä¸å½±åæ£å¸¸ç¨åºçæ§è¡æ§è½ãä½å®çé®é¢æ¯å½å
åè尽触å GC æ¶ï¼éè¦ä¸ææ£å¸¸ç¨åºä¸æ®µæ¶é´æ¥æ¸
æ«å
åï¼å¨å
å大对象å¤çæ¶åè¿ä¸ªä¸æå¯è½å¾é¿ã
éç¨æè
é¨åéç¨æ è®°-æ¸
æ«çä¾åé常å¤ï¼ä¸ä¸ä¸å举äºã
3. èç¹å¤å¶ï¼copyingï¼ã
åºæ¬æè·¯æ¯ææ´ä¸ªå
å空é´ä¸å为äºï¼ä¸å¦¨è®°ä¸º A å Bãææ对象çå
åå¨ A ä¸åé
ï¼å½ A å¡æ»¡çæ¶åï¼åæ ·ä»å¯åå¨åç¨åºæ ä¸çå¼ç¨åºåï¼éå以对象为èç¹ã以å¼ç¨ä¸ºè¾¹ææçå¾ï¼æææå¯ä»¥è®¿é®å°ç对象å¤å¶å° B å»ï¼ç¶åå¯¹è° A å B çè§è²ã
ç¸å¯¹äºæ è®°-æ¸
æ«ï¼èç¹å¤å¶ç主è¦ç¼ºç¹æ¯æ»æä¸å空é´ç©ºé²çæ æ³å©ç¨ï¼å¦ä¸ä¸ªæ¯è¾éæ¦ç缺ç¹æ¯å®ä½¿ç¨å
åçæ¹å¼ä¸ç°æçå
åæ¢é¡µãCache æ¢å
¥æ¢åºæºå¶ææ½å¨çå²çªãä½å®æ个å¾å¤§çä¼ç¹ï¼ ææç对象å¨å
åä¸æ°¸è¿é½æ¯ç´§å¯æåçï¼æ以åé
å
åçä»»å¡åå¾æ为ç®åï¼åªè¦ç§»å¨ä¸ä¸ªæéå³å¯ã对äºå
ååé
é¢ç¹çç¯å¢æ¥è¯´ï¼æ§è½ä¼å¿ç¸å½å¤§ãå¦å¤ï¼ç±äºä¸éè¦æ¸
æ«æ´ä¸ªå
å空é´ï¼æ以å¦æå
åä¸å活对象å¾å°èåå¾å¯¹è±¡å¾å¤çè¯ï¼æäºè¯è¨æè¿ä¸ªå¾åï¼ï¼è§¦å GC é æçä¸æä¼å°äºæ è®°-æ¸
æ«ã
åæ ·çï¼éç¨æè
é¨åéç¨èç¹å¤å¶çä¾åä¹é常å¤ï¼ä¸ä¸ä¸å举äºã
温馨提示:答案为网友推荐,仅供参考