ÉîÈëÀí½âNode.jsÖеÄÀ¬»ø»ØÊÕºÍÄÚ´æÐ¹Â©µÄ²¶»ñ
ÔÎÄÁ´½Ó http://www.csdn.net/article/2015-11-24/2826316
¶ÔÓÚNode.js¶øÑÔ£¬Í¨³£±»±§Ô¹×î¶àµÄÊÇËüµÄÐÔÄÜÎÊÌâ¡£µ±È»Õâ²¢²»Òâζ×ÅNode.jsÔÚÐÔÄÜ·½Ãæ¾Í±ÈÆäËû¼¼Êõ±íÏֵͼ¸ü ²î£¬ Òò´Ë¿ª·¢ÕßÓбØÒªÇåÎúµÄÀí½âNode.jsÊǾßÌåÈçºÎ¹¤×÷µÄµÄ¡£ÓÉÓÚÕâ¸ö¼¼ÊõÓÐÒ»¸ö·Ç³£±âƽµÄѧϰÇúÏߣ¬ Èç¹ûÒª¸ú×ÙNode.jsµÄÔËÐУ¬Í¨³£¶¼±È½Ï¸´ÔÓ£¬Òò´ËÄãÐèÒªÌáǰÀí½âËüµÄÔËÐлúÖÆ£¬´Ó¶ø±ÜÃâ¿ÉÄÜ´æÔÚµÄÐÔÄÜËðʧ¡£Ò»µ©³öÏÖÁËÎÊÌ⣬ ÄãÐèÒª¾¡¿ìµÄ¶¨Î»Ëü²¢½øÐÐÐÞ¸´¡£±¾ÎÄÖ÷Òª½éÉÜÁËÈçºÎ¹ÜÀíNode.jsÓ¦ÓõÄÄڴ棬ÒÔ¼°ÈçºÎÏòÏÂ×·×ÙÓëÄÚ´æÏà¹ØµÄÎÊÌâ¡£
Node.jsÄÚ´æ¹ÜÀí
²» ͬÓÚPHPÕâÑùµÄƽ̨£¬Node.jsÓ¦ÓÃÊÇÒ»¸öÒ»Ö±ÔËÐеĽø³Ì¡£ËäÈ»ÕâÖÖ»úÖÆÓкܶàµÄÓŵ㣬ÀýÈçÔÚÅäÖÃÊý¾Ý¿âÁ¬½ÓÐÅϢʱ£¬ Ö»ÐèÒª½¨Á¢Ò»´ÎÁ¬½Ó£¬±ã¿ÉÒÔÈÃËùÓеÄÇëÇó½øÐи´ÓøÃÁ¬½ÓÐÅÏ¢£¬µ«²»ÐÒµÄÊÇ£¬ÕâÖÖ»úÖÆÒ²´æÔÚȱÏÝ¡£ µ«ÊÇ£¬Ê×ÏÈÎÒÃÇ»¹ÊÇÀ´Á˽âһЩNode.js»ù±¾ÖªÊ¶¡£
Node.jsÊÇÒ»¸öÓÉJavaScript V8ÒýÇæ¿ØÖƵÄC++³ÌÐò
Google V8ÊÇ Ò»¸öÓÉGoogle¿ª·¢µÄJavaScriptÒýÇæ£¬µ«ËüÒ²¿ÉÒÔÍÑÀëä¯ÀÀÆ÷±»µ¥¶ÀʹÓᣠÕâʹµÃËüÄܹ»ÍêÃÀµÄÆõºÏNode.js£¬Êµ¼ÊÉÏV8Ò²ÊÇNode.jsƽ̨ÖÐΨһÄܹ»Àí½âJavaScriptµÄ²¿·Ö¡£ V8»á½«JavaScript´úÂëÏòϱàÒëΪ±¾µØ´úÂ루native code£©£¬È»ºóÖ´ÐÐËü¡£ÔÚÖ´ÐÐÆÚ¼ä£¬V8»á°´Ðè½øÐÐÄÚ´æµÄ·ÖÅäºÍÊÍ·Å¡£ ÕâÒâζ×Å£¬Èç¹ûÎÒÃÇÔÚ̸ÂÛNode.jsµÄÄÚ´æ¹ÜÀíÎÊÌ⣬Ҳ¾ÍÊÇÔÚ˵V8µÄÄÚ´æ¹ÜÀíÎÊÌâ¡£
Äã¿ÉÒԲο¼Õâ¸öÁ´½ÓÀ´Á˽âÈçºÎ´ÓC++µÄ½Ç¶ÈʹÓÃV8¡£
V8µÄÄÚ´æ¹ÜÀíģʽ
Ò»¸öÔËÐеijÌÐòͨ³£ÊÇͨ¹ýÔÚÄÚ´æÖзÖÅäÒ»²¿·Ö¿Õ¼äÀ´±íʾµÄ¡£Õⲿ·Ö¿Õ¼ä±»³ÆÎª×¤Áô¼¯£¨Resident Set£©¡£ V8µÄÄÚ´æ¹ÜÀíģʽÓеãÀàËÆÓÚJavaÐéÄâ»ú£¨JVM£©£¬Ëü»á½«ÄÚ´æ½øÐзֶΣº
· ´úÂë Code£ºÊµ¼Ê±»Ö´ÐеĴúÂë
· Õ» Stack£º°üÀ¨ËùÓеÄЯ´øÖ¸ÕëÒýÓöÑÉ϶ÔÏóµÄÖµÀàÐÍ£¨ÔʼÀàÐÍ£¬ÀýÈçÕûÐͺͲ¼¶û£©£¬ÒÔ¼°¶¨Òå³ÌÐò¿ØÖÆÁ÷µÄÖ¸Õë¡£
· ¶Ñ Heap£ºÓÃÓÚ±£´æÒýÓÃÀàÐÍ£¨°üÀ¨¶ÔÏó¡¢×Ö·û´®ºÍ±Õ°ü£©µÄÄÚ´æ¶Î
ÔÚNode.jsÖУ¬µ±Ç°µÄÄÚ´æÊ¹ÓÃÇé¿ö¿ÉÒÔÇáËɵÄʹÓÃ
process.memoryUsage()½øÐвéѯ£¬ ʵÀý³ÌÐòÈçÏ£º
[js] view plaincopy
1. var util = require('util');
2. console.log(util.inspect(process.memoryUsage()));
Õ⽫»áÔÚ¿ØÖÆÌ¨²úÉúÈçϽá¹û£º
[js] view plaincopy
1. {
2. rss: 4935680,
3. heapTotal: 1826816,
4. heapUsed: 650472
5. }
process.memoryUsage()º¯Êý·µ»ØµÄ¶ÔÏó°üº¬£º
· ³£×¤¼¯µÄ´óС - rss
· ¶ÑµÄ×ÜÖµ - heapTotal
· ʵ¼ÊʹÓÃµÄ¶Ñ - heapUsed
ÎÒÃÇ¿ÉÒÔÀûÓÃÕâ¸öº¯ÊýÀ´¼Ç¼²»Í¬Ê±¼äµÄÄÚ´æÊ¹ÓÃÇé¿ö£¬²¢ÀûÓÃÕâЩÊý¾Ý»æÖƳÉÒ»ÕÅͼ´Ó¶ø¸üÇåÎúµÄչʾV8ÊÇÈçºÎ´¦ÀíÄÚ´æµÄ¡£
ͼ ÖÐ×î¶¥¶ËµÄ³ÈÉ«ÏßÌõΪRSS£¨×¤Áô¼¯´óС£©£¬½ÓÏÂÀ´ºìÉ«ÏßÌõ±íʾ¶ÑµÄ×ÜÖµ£¬±íÏÖµÄ×îΪ²»Îȶ¨µÄ²¿·ÖÊÇ»ÆÉ«ÏßÌõ£¬ ËüËù±íʾµÄÊÇÒÑʹÓõĶѵĴóС£¬ËäÈ»ÏßÌõ²»Í£µÄ¶¶¶¯£¬µ«×ÜÊÇά³ÖÔÚÒ»¶¨µÄ±ß½çÖµÄÚ±£³ÖÒ»¸öÎȶ¨ÖÐλÊý¡£ ·ÖÅäºÍ»ØÊÕ¶ÑÄÚ´æµÄ»ú±»³ÆÎªÀ¬»ø»ØÊÕ£¨Garbage Collection£©¡£
À¬»ø»ØÊÕ
ÿ¸öÐèÒªÏûºÄÄÚ´æµÄ³ÌÐò¶¼ÐèÒª ijÖÖ»úÖÆÀ´Ô¤Ô¼ºÍÊÍ·ÅÄÚ´æ¿Õ¼ä¡£ÔÚCºÍC++³ÌÐòÖУ¬³ÌÐò¿ÉÒÔͨ¹ýmalloc()ºÍfree() ÕâÁ½¸öº¯ÊýÀ´ÉêÇëºÍÊÍ·ÅÄÚ´æ¡£ÎÒÃÇ·¢ÏÖ£¬ÕâÐèÒªÓɳÌÐòÔ±¸ºÔðÊͷŲ»ÔÙʹÓõĶÑÄÚ´æ¿Õ¼ä¡£Èç¹ûÒ»¸ö³ÌÐòËù·ÖÅäµÄÄÚ´æ²»ÔÙʹÓÃÁË£¬ ȴûÓб»¼°Ê±Êͷŵϰ£¬ÄÇôÖð½¥ÀÛ»ý»áµ¼Ö³ÌÐò¶Ô¶Ñ¿Õ¼äµÄÏûºÄÔ½À´Ô½´ó£¬Ö±ÖÁºÄ¾¡Õû¸ö¶Ñ¿Õ¼ä£¬´Ëʱ»áµ¼Ö³ÌÐò±ÀÀ£¡£ ͨ³£ÎÒÃdzÆÕâÖÖÇé¿öΪÄÚ´æÐ¹Â©£¨memory leak£©¡£
Ç°ÃæÎÒÃÇÒѾÁ˽⵽£¬Node.jsµÄJavaScript´úÂë»áͨ¹ýV8±àÒë Ϊ±¾µØ´úÂ루Native Code£©¡£ ÏÔÈ»×îÖÕµÄÔʼÊý¾Ý½á¹¹ÒѾºÍ×î³õµÄ±íʾûÓÐÌ«¶àµÄ¹ØÏµÁË£¬ËüÍêÈ«ÓÉV8À´½øÐйÜÀí¡£Õâ˵Ã÷£¬ ÔÚJavaScriptÖУ¬ÎÒÃDz¢²»ÄÜÖ÷¶¯µÄ½øÐÐÄÚ´æµÄ·ÖÅäºÍ»ØÊÕ²Ù×÷¡£V8ʹÓÃÁËÖøÃûµÄ±»³ÆÎª“À¬»ø»ØÊÕ”µÄ»úÖÆÀ´×Ô¶¯½â¾öÕâ¸öÎÊÌâ¡£
À¬»ø»ØÊÕ±³ºóµÄÀíÂ۷dz£µÄ¼òµ¥£ºÈç¹ûÄÚ´æ¶Î²»ÔÙ±»ÆäËûµØ·½ÒýÓã¬ÎÒÃDZã¿ÉÒÔ¼ÙÉèËüÒѾ²»ÔÙ±»Ê¹Óã¬Òò´Ë£¬¾Í¿ÉÒÔÊÍ·ÅÕâÆ¬ÄÚ´æ¶Î¡£ È»¶ø£¬ ¼ìË÷ºÍά»¤ÕâЩÐÅÏ¢ÊǷdz£¸´Ôӵģ¬ÒòΪÕâ¿ÉÄÜ»áÉæ¼°µ½ÒýÓÃÖ®¼äµÄÏ໥Á´½Ó£¬´Ó¶øÐγÉÒ»¸ö¸´ÔÓµÄͼ½á¹¹¡£
ÔÚÉÏÃæµÄ¶ÑͼÖУ¬Èç¹ûºìÉ«µÄ¶ÔÏó²»ÔÙÓÐÒýÓÃÖ¸ÏòËüµÄ»°£¬ÄÇô¸Ã¶ÔÏó¾Í¿ÉÒÔ±»¶ªÆú£¨ÊÍ·ÅÄڴ棩¡£
À¬»ø»ØÊÕÊǸö´ú¼Û·Ç³£¸ßµÄ½ø³Ì£¬ÒòΪËü»áÖжϳÌÐòÔÚÖ´ÐУ¬´Ó¶øÓ°Ïì³ÌÐòµÄÐÔÄÜ¡£ÎªÁ˲¹¾ÈÕâÖÖÇé¿ö£¬V8ʹÓÃÁËÁ½ÖÖÀàÐ͵ÄÀ¬»ø»ØÊÕ£º
· Scavenge£¨ÌáÈ¡£©£¬Ëٶȿ쵫²»³¹µ×
· Mark-Sweep£¨±ê¼Ç-Çå³ý£©£¬Ïà¶ÔÂýÒ»µã£¬µ«ÊÇ¿ÉÒÔ»ØÊÕËùÓÐδ±»ÒýÓõÄÄÚ´æ
Äã¿ÉÒÔͨ¹ýÕâÆª²©ÎÄÉîÈëµÄÁ˽â¸ü¶à¹ØÓÚV8À¬»ø»ØÊÕµÄÄÚÈÝ¡£
ÖØÐ»عËÎÒÃÇÀûÓÃprocess.memoryUsage()·½·¨ÊÕ¼¯µ½µÄÊý¾Ý£¬ÎÒÃÇ¿ÉÒԺܼòµ¥µÄ¾Íʶ±ð³ö²»Í¬µÄÀ¬»ø»ØÊÕÀàÐÍ£º ³É¾â³Ý×´£¨saw-tooth pattern£©ÊÇÓÉScavenge´´½¨µÄ£¬¶ø³öÏÖÏòÏÂÌøÔ¾µÄÔòÊÇÓÉMark-Sweep²Ù×÷²úÉúµÄ¡£
ͨ¹ýʹÓÃÔÉúÄ£¿énode-gc-profiler£¬ÎÒÃÇ¿ÉÒÔÊÕ¼¯¸ü¶à¹ØÓÚÀ¬»ø»ØÊÕµÄÐÅÏ¢¡£ ¸ÃÄ£¿é»á¶©ÔÄÓÉV8´¥·¢µÄËùÓÐÀ¬»ø»ØÊÕʼþ£¬²¢½«ËüÃDZ©Â¶¸øJavaScript¡£
·µ»ØµÄ¶ÔÏó±íʾÁËÀ¬»ø»ØÊÕµÄÀàÐͺͳÖÐøÊ±¼ä¡£ÔÙÒ»´ÎµÄ£¬ÎÒÃÇ¿ÉÒÔÇáËɵÄÀûÓÿÉÊÓ»¯Í¼ÐÎÀ´¸üºÃµÄÀí½âËüÊÇÈçºÎ¹¤×÷µÄ¡£
ÎÒÃÇ¿ÉÒÔ·¢ÏÖScavenge CompactÔËÐеıÈMark Sweep¸üΪƵ·±¡£¸ù¾ÝÓ¦Óõĸ´Ôӳ̶ÈÕâ¿ÉÄÜ»á´æÔÚÒ»¶¨µÄ±ä»¯¡£ ÓÐÒâ˼µÄÊÇ£¬ÉÏÃæµÄͼÐÎÒ²Õ¹ÏÖÁËÆµ·±È´·Ç³£¶ÌµÄMark-SweepÔËÐÐ×´¿ö£¬ÕâÒ²¸úÔËÐеĺ¯ÊýÓйء£
Èç¹û³öÁ˹ÊÕÏ
¼ÈÈ»ÓÐÀ¬»ø»ØÊÕÆ÷À´¸ºÔðÄÚ´æÇåÀí£¬ÄÇôΪʲôÎÒÃÇ»¹ÐèÒª¹ØÐÄÕâ¸öÄØ£¿ÊÂʵÉÏ£¬ÕâÈÔÈ»»áÓпÉÄÜ·¢ÉúÄÚ´æÐ¹Â©£¬ ÄãµÄÈÕÖ¾¼Ç¼¿ÉÄÜ»á¼Ç¼ÕâЩÐÅÏ¢¡£
µ±ÄÚ´æÐ¹Â©³öÏÖµÄʱºò£¬ÄÚ´æ¿ÉÄÜ»á³öÏÖ¶Ñ»ýµÄÇé¿ö£¬ÈçͼËùʾ¡£
À¬ »ø»ØÊÕ£¨GC£©»úÖÆ»á¾¡¿ÉÄܵĻØÊÕÄڴ棬µ«ÊÇÿ´ÎÔËÐÐGC¶¼»áµ¼ÖÂÒ»¶¨µÄËðºÄ¡£ÎÒÃÇ·¢ÏÖÔÚÉÏͼÖУ¬¶ÑÄÚ´æµÄʹÓô¦ÓÚÒ»¸ö²»¶ÏÅÊÉýµÄ¹ý³Ì£¬ Õâͨ³£Òâζ×ÅÄÚ´æÐ¹Â©µÄ·¢Éú¡£Ê¹ÓÃÕâЩÐÅÏ¢£¬ÎÒÃÇÄܹ»½ÏΪ·½±ãµÄÅжÏÊÇ·ñ³öÏÖÁËÄÚ´æÐ¹Â©£¬ ÏÂÃæÎÒÃǽøÒ»²½µÄ̽Ë÷ÈçºÎÔÚÄÚ´æÐ¹Â©·¢ÉúµÄÊÇÈ¥ÏòÏÂ×îÖÕÎÊÌâµÄÔ´Í·¡£
ÎÊÌâ×·×ٺͽâ¾ö
ÓÐЩй©µÄ·¢ÉúÊÇÏÔ¶øÒ×¼ûµÄ£¬ÀýÈ罫Êý¾Ý´æ´¢ÔÚÈ«¾Ö±äÁ¿ÖУ¬ÀýÈ罫ÿ´Î·ÃÎÊÓû§µÄIPÐÅÏ¢¶¼´æ·ÅÔÚÒ»¸öÊý×éÖС£ ¶øÓÐЩÎÊÌâÔòÊDz»Òײì¾õµÄ£¬ÀýÈçÖøÃûµÄÎÖ¶ûÂêÄÚ´æÐ¹Â©Ê¼þ, ËüÊÇÓÉÓÚNode.jsºËÐÄ´úÂëÖÐÒ»¸ö·Ç³£Ï¸Î¢µÄÉùÃ÷ȱʧµ¼Öµģ¬Õâ¿ÉÄÜÐèÒª»¨·ÑÊýÖܵÄʼþ²ÅÄÜ×·×Ùµ½¡£
ÔÚÕâÀïÎÒ²¢²»»á¸²¸ÇºËÐĵĴúÂë´íÎó¡£¶øÊÇÀ´¿´Ò»¸öÄÑÒÔ×·×ÙµÄÄÚ´æÐ¹Â©°¸Àý£¬Í¨¹ýÕâ¸öÀý×ÓÄܹ»ÈÃÄãÔÚ×Ô¼ºµÄJavaScript´úÂëÖж¨Î»´íÎó£¬ Õâ¸öÀý×ÓÀ´Ô´ÓÚMeteorµÄ²©¿Í¡£
Õ⠶δúÂë¸Õ¿´µ½µÄʱºò²¢Ã»Óз¢ÏÖÓÐʲôÎÊÌâ¡£ÎÒÃÇ¿ÉÒÔÈÏΪtheTingÔÚÿ´Îµ÷ÓÃreplaceThing()µÄʱºò¶¼»á±»¸²Ð´¡£ ÎÊÌâ¾ÍÊÇsomeMethodÓµÓÐ×÷ΪÉÏÏÂÎĵķâ±Õ×÷ÓÃÓò¡£ÕâÒâζ×Åunused()ÊÇÔÚsomeMethod()ÄÚ²¿µÄ£¬ÉõÖÁunused()´Óδ±»µ÷ Óùý£¬ ÕâÒ²¾ÍÒÔΪÁËÀ¬»øÊÕ¼¯Æ÷ÎÞ·¨ÊÍ·ÅoriginalThing¡£Óзdz£¶àµÄ¼ä½Ó·½·¨ÐèÒª×ñÊØ¡£ÕâÔÚ´úÂëÖв¢·ÇÊÇbug£¬µ«Ëü»áµ¼ÖÂÄÚ´æÐ¹Â©£¬ ²¢ÇÒÄÑÒÔ×·×Ù¡£
Òò´ËÈç¹ûÎÒÃÇÄܹ»½øÈë¶ÑÄڴ棬²¢ÇÒ¹Û²ìËüʵ¼Ê°üº¬µÄÄÚÈÝ£¬Õâ»á·Ç³£ÓÐÖúÓÚÎÒÃÇ×îÖÕ´íÎóÔ´¡£ÐÒÔ˵ÄÊÇ£¬ÎÒÃÇ¿ÉÒÔÕâô×ö£¡ V8ÌṩÁËÒ»ÖÖ·½·¨ÓÃÓÚת´¢£¨µ¼³ö£©µ±Ç°µÄ¶Ñ£¬²¢ÇÒv8-profiler½«ËüÓÃJavaScript½Ó¿ÚµÄÐÎʽ±©Â¶Á˳öÀ´¡£
Èç ¹ûÄÚ´æÊ¹ÓóÖÐøÅÊÉýµÄ»°£¬Õâ¸ö¼òµ¥µÄÄ£¿é¿ÉÒÔ´´½¨Á˶ѵÄת´¢Îļþ¡£µ±È»£¬Ò²ÓÐÆäËû¸üÇÉÃîµÄ·½·¨À´Ì½²âÀàËÆµÄÎÊÌ⣬ µ«¶ÔÓÚÎÒÃǵĵ±Ç°ÈÎÎñ¶øÑÔ£¬Õâ¾Í×ã¹»ÁË¡£Èç¹û´æÔÚÄÚ´æÐ¹Â©£¬³ÌÐò»áÖжϣ¬²¢ÇÒ°éËæ×Å´óÁ¿µÄÀàËÆÎļþ¡£ Òò´ËÄã¿ÉÒÔͨ¹ýΪÕâ¸öÄ£¿é¹Ø±ÕºÍÔö¼ÓһЩÌáʾ¹¤¾ßµÄ·½Ê½À´Ä£Äâ¡£ÔÚChromeÖÐÒ²ÌṩÁËÀàËÆµÄ¶Ñ¿Õ¼äת´¢¹¦ÄÜ£¬ ²¢ÇÒÄã¿ÉÒÔÖ±½Óͨ¹ýChrome¿ª·¢Õß¹¤¾ßÀ´·ÖÎöv8-profilerµÄת´¢Îļþ¡£
µ¥Ò»µÄ¶Ñת´¢¿ÉÄܲ¢²»ÄܰïÖúÄ㣬ÒòΪËü²»ÄÜչʾ¶ÑËæ×Åʱ¼ä±ä»¯µÄÔö³¤¹ý³Ì¡£Õâ¾ÍÊÇΪʲôChrome¿ª·¢Õß¹¤¾ßÔÊÐíÄã¶Ô±È²»Í¬µÄÄÚ´æ¸Å¿öÎļþ¡£ Äã¿ÉÒÔͨ¹ý±È½ÏÁ½¸öרעÎļþÀ´»ñµÃ²îÖµ£¬ÕâÑù¿ÉÒÔÈÃÄã¹Û²ìµ½ÄÚ´æÕ¼Óõı仯Çé¿ö¡£ÈçÏÂͼËùʾ£º
Õâ ÀïÄܹ»¿´µ½Ò»Ð©ÎÊÌâËùÔÚ£¬longStr±äÁ¿°üº¬×ÅһЩÐǺÅ×é³ÉµÄ×Ö·û´®£¬²¢ÇÒ±»originalThingËùÒýÓ㬲¢ÇÒÒ²±»Ò»Ð©·½·¨ËùÒýÓ㬠ȻºóÒ²±»……µ±È»£¬ÄãÄÜ¿´Òâʶµ½Õâµã¡£ÕâÀïÓÐÒ»¸ö·Ç³£³¤µÄÒýÓ÷¾¶£¬±Õ°üÉÏÏÂÎĻᵼÖÂlongStr³¤ÆÚÕ¼ÓÃÄڴ棬²¢Çҵò»µ½ÊÍ·Å¡£
ËäÈ»Õâ¸öÎÊÌâµ¼ÖÂÁËÒ»¸öÏÔ¶øÒ×¼ûµÄÎÊÌ⣬µ«ÊǶ¨Î»ÎÊÌâµÄ¹ý³Ì×ÜÊÇÏàËÆµÄ£º
1. ²»¶¨Ê±µÄ´´½¨¶ÑµÄת´¢Îļþ
2. ½øÐв»Í¬ÎļþµÄ¶Ô±È£¬´Ó¶ø¶¨Î»ÎÊÌâËùÔÚ
×ܽá
ÕýÈçÎÒÃÇËù¿´µ½µÄ£¬À¬»øÊÕ¼¯ÊǸö·Ç³£¸´ÔӵĹý³Ì£¬²¢ÇÒ¼´Ê¹´úÂëûÓÐÎÊÌâÒ²ÓпÉÄܻᵼÖÂÄÚ´æÐ¹Â©¡£ ͨ¹ýʹÓÃv8£¨ºÍchrome¿ª·¢Õß¹¤¾ß£©ÌṩµÄһЩ¿ªÏä¼´ÓõŦÄÜ£¬Äܹ»°ïÖúÎÒÃǶ¨Î»ÎÊÌâµÄÔ´Í·£¬ Èç¹ûÄ㽫ÕâÖÖ»úÖÆ¹¹½¨µ½ÄãµÄÓ¦ÓÃÄÚ£¬Õ⽫»á·Ç³£ÓÐÖúÓÚÄã·¢ÏÖºÍÐÞ¸´ÎÊÌâ¡£
µ±È»£¬Èç¹ûÄãÎÊÎÒÉÏÃæµÄ´úÂëÈçºÎÐÞ¸´£¬Æäʵ·Ç³£µÄ¼òµ¥£¬Ö»ÒªÔÚº¯ÊýµÄ×îºó¼ÓÉÏÒ»ÐÐtheThing = null;¼´¿É¡£