å‚考this Unity documentation并转到
部分 Â垃圾收集缓慢但ä¸é¢‘ç¹çš„å¤§å †
var tmp = new System.Object[1024];
// make allocations in smaller blocks to avoid them to be treated in a special way, which is designed for large blocks
for (int i = 0; i < 1024; i++)
tmp[i] = new byte[1024];
// release reference
tmp = null;
诀çªæ˜¯åœ¨ç¨‹åºå¯åŠ¨æ—¶é¢„先分é…一些内å˜å—。
为什么这个技巧有效?
这些å—是å¦æ˜¯ï¼ƒ34;注册的&#34; (或者&#34;绑定&#34;)当应用程åºè¢«é¢„先分é…时,å³ä½¿åœ¨tmp
完æˆæ—¶é‡Šæ”¾Start()
,æ“作系统ä»ä¼šå¤„ç†è¿™äº›å—as&#34;注册&#34;申请?
由于å—å·²ç»æ³¨å†Œï¼†ï¼ƒ34;到应用程åºï¼Œå› æ¤åº”用程åºçš„å †å¤§å°æ‰©å±•åˆ°ä¸€å®šå¤§å°ï¼Œå¹¶ä¸”下次获å–内å˜å—时,æ“作系统将从该应用程åºçš„å †ä¸é€‰æ‹©å®ƒã€‚
我的解释是å¦æ£ç¡®ï¼Ÿæ— 论是或å¦ï¼Œæœ‰äººå¯ä»¥è¯·è¯¦ç»†è§£é‡Šï¼Œè°¢è°¢ã€‚
ç”案 0 :(得分:5)
è¿™ä¸æ˜¯ä¸€ä¸ªçœŸæ£çš„伎俩。这是Unity3D部分处ç†å†…å˜çš„æ–¹å¼ã€‚
在Unity3Dä¸ï¼Œæ‚¨æ‹¥æœ‰ç”±Mono处ç†å¹¶å°†è¢«åžƒåœ¾æ”¶é›†çš„对象,以åŠç”±Unity处ç†çš„对象,这些对象ä¸ä¼šè¢«åžƒåœ¾å›žæ”¶ã€‚å—符串,整数ç‰ç”±Mono自动清ç†ï¼Œæˆ‘们ä¸å¿…担心这一点。纹ç†ï¼ˆ2D)ç‰ä¸æ˜¯ï¼Œæˆ‘们必须手动处ç†è¿™äº›å¯¹è±¡ã€‚
当å‘出内å˜è¯·æ±‚时,首先å‘生的事情是内å˜ç®¡ç†å™¨ä»Žæ“作系统扫æ应​​用程åºå½“å‰åˆ†é…的内å˜ï¼Œä»¥èŽ·å¾—足以å˜å‚¨æ‚¨è¯·æ±‚çš„æ•°æ®çš„å—。如果找到匹é…项,则使用该内å˜ã€‚如果未找到匹é…项,则应用程åºå°†ä»ŽOS请求é¢å¤–的内å˜ä»¥å˜å‚¨æ‚¨çš„æ•°æ®ã€‚当这些数æ®ä¸å†ç”¨å®Œæ—¶ï¼Œå®ƒä¼šè¢«åžƒåœ¾æ”¶é›†ï¼Œä½†åº”用程åºä»ä¿ç•™è¯¥å†…å˜ã€‚本质上,它在内å˜ä¸Šè®¾ç½®ä¸€ä¸ªæ ‡å¿—,表示它是“å¯ç”¨çš„â€æˆ–å¯é‡æ–°åˆ†é…çš„ã€‚è¿™æ ·å°±å¯ä»¥é€šè¿‡æ°¸ä¸è¿”回æ¥å‡å°‘对æ“作系统的内å˜è¯·æ±‚。
è¿™æ„味ç€ä¸¤ä»¶äº‹;
1)您的应用程åºçš„内å˜å°†ç»§ç»å¢žé•¿ï¼Œå¹¶ä¸”ä¸ä¼šå°†å†…å˜è¿”回到æ“作系统。在移动设备上,这很å±é™©ï¼Œå°±åƒä½ 使用太多内å˜ä¸€æ ·ï¼Œä½ 的应用程åºå°†è¢«ç»ˆæ¢ã€‚
2)您的应用程åºå®žé™…上å¯èƒ½ä¼šåˆ†é…比实际需è¦æ›´å¤šçš„内å˜ã€‚这是由于内å˜ç¢Žç‰‡é€ æˆçš„。应用程åºçš„内å˜æ± ä¸å¯èƒ½æœ‰10MBçš„å¯ç”¨å†…å˜ï¼Œä½†è¿™äº›å†…å˜ä¸çš„éžå†…å˜å¤§åˆ°è¶³ä»¥å®¹çº³æ‚¨éœ€è¦å˜å‚¨çš„æ•°æ®ã€‚å› æ¤ï¼Œåº”用程åºå¯èƒ½ä¼šä»Žæ“作系统请求更多内å˜ï¼Œå› 为没有å¯ç”¨çš„å•ä¸ªè¿žç»å†…å˜ã€‚
å› ä¸ºæ‚¨æ£åœ¨åˆ›å»ºä¸€ä¸ªå¤§å¯¹è±¡ï¼Œå› æ¤è¯·æ±‚内å˜ï¼Œå½“您将该对象设置为null并å‘垃圾回收器å‘出应用程åºä¸å†éœ€è¦å†…å˜çš„ä¿¡å·æ—¶ï¼Œå°†å†…å˜é‡æ–°åˆ†é…给其他内容会更快。对象而ä¸æ˜¯ä»ŽOS请求é¢å¤–的内å˜ã€‚这就是为什么ç†è®ºä¸Šè¿™ä¸ªç‰¹å®šçš„æ–¹æ³•å¾ˆå¿«å¹¶ä¸”ä¼šå¯¼è‡´è¾ƒå°‘çš„æ€§èƒ½å³°å€¼ï¼Œå› ä¸ºåžƒåœ¾æ”¶é›†å™¨çš„è°ƒç”¨æ¬¡æ•°è¾ƒå°‘ã€‚ç‰¹åˆ«æ˜¯å› ä¸ºè¿™æ˜¯ä¸€ä¸ªå¤§çš„ï¼Œè¿žç»çš„内å˜åˆ†é…。
ç”案 1 :(得分:4)
 Â为什么这个技巧有效?
è¿™ä¸ªæŠ€å·§æœ‰æ•ˆï¼Œå› ä¸ºåº”ç”¨ç¨‹åºä¸ä¼šå°†å†…å˜è¿”回给æ“作系统,除éžæ“作系统内å˜ç®¡ç†å™¨å¾ˆä½Žå¹¶æ˜Žç¡®è¦æ±‚å®ƒä»¬è¿™æ ·åšï¼Œç„¶åŽå®ƒä»¬å°†å°½å¯èƒ½åœ°é‡Šæ”¾ã€‚å‡è®¾ä¸€æ—¦åˆ†é…了内å˜ï¼Œå°±ä¼šå†æ¬¡éœ€è¦å®ƒã€‚如果已ç»åˆ†é…,​​则没有ç†ç”±å°†å…¶è¿”回给æ“作系统,除éžç¡®å®žéœ€è¦ä½¿ç”¨å®ƒã€‚