Ê×Ò³ | ¹«Ë¾¼ò½é | Êý¾Ý»Ö¸´ | ±¸·Ý·þÎñ | ³É¹¦°¸Àý | ¼¼ÊõÖÐÐÄ | ¿Í»§·þÎñ | ·þÎñ±¨¼Û | Êý¾Ý»Ö¸´Èí¼þ | ÁªÏµÎÒÃÇ | ±±ÑDz©¿Í  
 
  ±±¾©×ܲ¿£º 4006-505-646
  Ìì ½ò ²¿£º 4006-505-646
  ÉÏ º£ ²¿£º 4006-505-646
  Éî ÛÚ ²¿£º 4006-505-646
  ¹ã ÖÝ ²¿£º 4006-505-646
  ÖØ Çì ²¿£º 4006-505-646
  ÄÏ ¾© ²¿£º 4006-505-646
  ÆäËüµØÇø£º 4006-505-646
±±ÑÇÊý¾Ý»Ö¸´Èí¼þWindowsרҵ°æ
ÈýÐÇÊÖ»úÊý¾Ý»Ö¸´Èí¼þV1.0
±±ÑÇÆ»¹ûÊÖ»úÊý¾Ý»Ö¸´Èí¼þV2.0
±±ÑÇÓ²Å̼Ïñ»úÊý¾Ý»Ö¸´Èí¼þ V
±±ÑÇvmwareÐéÄâ»úÊý¾Ý»Ö¸´Èí¼þ
±±ÑÇÕÕƬÊý¾Ý»Ö¸´Èí¼þ
±±ÑÇÉãÏñ»úÊý¾Ý»Ö¸´Èí¼þ v2.1
±±ÑÇSybaseÊý¾Ý¿âÐÞ¸´Èí¼þ V2.
raid´ÅÅÌÕóÁÐÓ¦¼±·½°¸
HP EVA4400/6400/8400/P6000
iphone Í¨Ñ¶Â¼¶ªÊ§ÈçºÎ»Ö¸´£¿
xen server ´æ´¢¿â(sr)Ë𻵺ó
RAID6½á¹¹Ô­ÀíÏê½â£¨±±ÑÇÊý¾Ý
AIXÏÂɾ³ýLVºóµÄÏÖ³¡±£»¤ºÍÊý
RAIDË𻵺ó ¶ÔÊý¾ÝµÄÍêÕû±¸·Ý
Äúµ±Ç°µÄλÖãºÊ×Ò³ >> ¼¼ÊõÖÐÐÄ >> ·þÎñÆ÷Êý¾Ý»Ö¸´ÎÄÀ¸ >> ÕýÎÄ

Java ÐéÄâ»ú£¬ReferenceµÄÈÏʶ

 ×î½üÔÚandroidÖнâ¾öͼƬµÄÄÚ´æÒç³öʱ£¬ÐèÒªjavaÖÐһЩµ×²ãµÄ֪ʶ£¬ÔÚ´ËС½áһϡ£
1.JavaÀ¬»ø»ØÊÕÆ÷¸ÅÊö

¡¡¡¡Java2ƽ̨ÀïÃæÒýÈëÁËjava.lang.ref°ü£¬Õâ¸ö°üÖеÄÀà¿ÉÒÔÈÃÎÒÃÇÒýÓöÔÏ󣬶øÊǵÄÕâЩ¶ÔÏó²»ÓÃÍ£ÁôÔÚÄÚ´æÖС£²»½ö½öÈç´Ë£¬ÕâЩÀàºÍJava±¾ÉíµÄÀ¬»ø»ØÊÕÆ÷»¹´æÔÚÒ»¶¨µÄ½»»¥¡£ÎÒÃÇƽʱ¿ª·¢µÄʱºòÓÐʱºò»áÓõ½System.gc()·½·¨£¬¶øJavaÀïÃæGCµÄ»ù±¾¹¤×÷Ô­ÀíÓÖÊÇÈçºÎÄØ£¿
   µ±È»Ê¹ÓÃJavaÒýÓÃÀàÖ÷ҪĿµÄÊÇΪÁ˺ÍJavaÀ¬»ø»ØÊÕÆ÷½øÐÐÓÐÏ޵Ľ»»¥£¬´Ó¶øÈ«ÃæÌáÉýÄÚ´æµÄ¹ÜÀíЧÂÊ£¬ÕâÖÖÇé¿öÔÚǶÈëʽϵͳºÍʵʱϵͳÒÔ¼°Ò»Ð©¶ÔÄÚ´æÒªÇóÑϸñµÄϵͳÀïÃæ±È½Ï´ÕЧ¡£

1£©GCµÄ»ù±¾Ô­Àí

¡¡¡¡JavaµÄÄÚ´æ¹ÜÀíÖ÷ÒªÖ¸µÄÊǶÔÄÚ´æÖеĶÔÏóµÄ¹ÜÀí£¬°üÀ¨Õë¶ÔÕâЩ¶ÔÏó½øÐÐÄÚ´æµÄ·ÖÅäºÍÊͷŵȸ÷ÖÖ²Ù×÷£¬Ñ§¹ýJavaµÄÈ˶¼Á˽âJava±¾ÉíµÄÄÚ´æÄ£ÐÍ£¬¶ÔÓÚÒ»¸öJavaµÄ¶ÔÏó¶øÑÔ£¬´æ´¢Ö÷Òª·ÖΪÁ½ÖÖ£¬Ò»ÖÖÊÇÄÚ´æ¶Ñ(Heap)£¬ÄÚ´æ¶ÑÊÇÎÞÐòµÄ£¬Ö÷ÒªÓÃÀ´´æ·Å´´½¨µÄJava¶ÔÏó£»Ò»ÖÖÊÇÄÚ´æÕ»(Stack)£¬Ö÷ÒªÓÃÀ´´æ·ÅJavaÒýÓã¬È»ºóÔÚ¹ÜÀí¹ý³ÌʹÓÃJavaÒýÓÃÖ¸ÏòJava¶ÔÏ󡣶øGC¾ÍÊǸºÔðÔÚ¶ÔÏó¡°²»¿É´ï¡±µÄʱºò½«¶ÔÏó»ØÊÕ£¬³£¼ûµÄÓï¾äÀýÈ磺
1
Object o = null;

¡¡¡¡¶øCG±¾ÉíÊÇÈçºÎ¹¤×÷µÄÄØ£¿µ±ÏµÍ³ÔÚ´´½¨¶ÔÏóµÄʱºò£¬¼´µ±ÎÒÃÇʹÓÃnew¹Ø¼ü×Ö´´½¨Ò»¸ö¶ÔÏóµÄʱºò£¬GC¾Í¿ªÊ¼¼à¿Ø¶ÔÏóµÄµØÖ·¡¢´óСÒÔ¼°Ê¹ÓÃ״̬¡£Ò»°ãÇé¿öÏ£¬JavaµÄGC»úÖƶ¼ÓÐÌض¨µÄ»ØÊÕËã·¨£¬GCͨ³£»áʹÓÃÓÐÏòͼµÄ·½Ê½À´¼Ç¼¶ÓÖеÄËùÓжÔÏó£¬Í¨¹ý´ËÖÖ·½Ê½È·¶¨ÄÄЩ¶ÔÏóÊÇ¡°¿É´ïµÄ¡±£¬¶øÄÄЩÊÇ¡°²»¿É´ïµÄ¡±¡£µ±GCÅжÏһЩ¶ÔÏ󲻿ɴïµÄʱºò£¬GC¾ÍÓÐÔðÈλØÊÕÏà¹ØÄÚ´æ¿Õ¼ä¡£µ«ÊÇ£¬ÒòΪƽ̨µÄ²»Í¬£¬ÍùÍùÔÚµ÷ÓÃSystem.gc()µÄʱºò£¬´æÔÚÌ«¶à²»È·¶¨ÐÔ£¬¿ÉÒÔÕâÑùÈÏΪ£¬µ±³ÌÐòµ÷ÓÃÁËSystem.gc()¹ýºó£¬½ö½öÊdzÌÐòÏòJVM·¢ËÍÁËÇëÇó£¬ÖÁÓÚJVM¾¿¾¹ÔÚʲôʱºò½øÐÐÀ¬»ø»ØÊÕ£¬²»Í¬µÄƽ̨²»Ò»Ñù¡££¨*£ºÐèÒª½â¾öµÄÎóÇøÊDz»Òª¾õµÃSystem.gc()µ÷ÓÃÁ˹ýºó£¬À¬»ø»ØÊÕÆ÷Ò»¶¨»á¶ÔϵͳÄÚ´æ½øÐлØÊÕ£¬ÏµÍ³»ØÊÕÏà¹ØÄÚ´æÈ¡¾öÓÚƽ̨ºÍϵͳ¡££©

2£©ÔöÁ¿·½Ê½GC£¨IncrementalGC£©

¡¡¡¡GCÔÚJVMÖÐͨ³£ÊÇÆô¶¯ÁËÒ»¸öеĽø³Ì»òÕßÒ»×éеĽø³Ì£¬Ëü±¾ÉíºÍJavaÓû§³ÌÐòÒ»ÑùÐèÒªÕ¼ÓÃheap¿Õ¼ä£¬ÔËÐÐʱҲռÓÃCPU¡£Éè¼ÆGCµÄʱºò£¬±ØÐëÒªÔÚÍ£¶Ùʱ¼äºÍ»ØÊÕÂÊÖ®¼ä½øÐÐȨºâ£¬Ô­ÒòÔÚÓÚËü±¾ÉíÕ¼ÓÃÁËHeap£¬Èç¹ûGCÔËÐÐʱ¼äÌ«³¤£¬Óû§¾Í»á¸Ð¾õµ½Java³ÌÐò±¾Éí»áÓÐÒ»¶¨µÄÍ£¶Ù£¬Èç¹ûÔËÐÐʱ¼äÌ«¶Ì£¬ÔòÓкܶàÄÚ´æûÓлØÊÕ£¬Ê¹µÃ³ÌÐòÀïÃæ´´½¨µÄJava¶ÔÏóÕ¼ÓÃÁË´óÁ¿µÄÄÚ´æ¡£ÔöÁ¿·½Ê½µÄGC¾ÍÊÇͨ¹ýÒ»¶¨µÄ»ØÊÕËã·¨£¬°ÑÒ»¸ö³¤Ê±¼äµÄÖжϣ¬·Ö³ÉºÜ¶àСµÄÖжϣ¬Í¨¹ýÕâÖÖ·½Ê½¼õÉÙGC¶Ô³ÌÐò±¾ÉíµÄÓ°Ïì¡£ÆäʵÔöÁ¿·½Ê½ÕûÌåÐÔÄܱȲ»ÉÏÆÕͨµÄ¸ß£¬µ«ÊÇÄܹ»¼õÉÙÍ£¶Ùʱ¼ä£¬¸ÄÉÆʹÓÃÕßµÄÓû§ÌåÑé¡£µ±È»³ýÁËÕâÑùµÄ·½Ê½£¬GCÕûÌåµÄ·½Ê½Îª£º

¡¡¡¡ÒýÓüÆÊý·¨(Reference Counting Collector) £»

¡¡¡¡TracingËã·¨(Tracing Collector)£»

¡¡¡¡CompactingËã·¨(Compacting Collector) £»

¡¡¡¡CopyingËã·¨(Coping Collector) £»

¡¡¡¡GenerationËã·¨(Generational Collector) £»

¡¡¡¡AdaptiveËã·¨(Adaptive Collector) £»

¡¡¡¡ÖÁÓÚÏà¹ØµÄËã·¨¿ÉÒÔÈ¥²éÔÄÏà¹ØµÄÎĵµ

2.JavaÖеĶÔÏóÒýÓ÷ÖÀà

¡¡¡¡JavaÖеĶÔÏóÒýÓÃÖ÷ÒªÓÐÒÔϼ¸ÖÖÀàÐÍ£º

¡¡¡¡1£©Ç¿¿É¼°¶ÔÏó£¨strongly reachable£©£º

¡¡¡¡¿ÉÒÔͨ¹ýÇ¿ÒýÓ÷ÃÎʵĶÔÏó£¬Ò»°ãÀ´Ëµ£¬ÎÒÃÇƽʱд´úÂëµÄ·½Ê½¶¼ÊÇʹÓõÄÇ¿ÒýÓöÔÏ󣬱ÈÈçϱߵĴúÂë¶Î£º
1
StringBuilder builder= new StringBuilder()£»

¡¡¡¡ÉϱߴúÂ벿·ÖÒýÓÃobjÕâ¸öÒýÓý«ÒýÓÃÄÚ´æ¶ÑÖеÄÒ»¸ö¶ÔÏó£¬ÕâÖÖÇé¿öÏ£¬Ö»ÒªobjµÄÒýÓôæÔÚ£¬À¬»ø»ØÊÕÆ÷¾ÍÓÀÔ¶²»»áÊͷŸöÔÏóµÄ´æ´¢¿Õ¼ä¡£ÕâÖÖ¶ÔÏóÎÒÃÇÓÖ³ÉΪǿÒýÓã¨Strong references£©£¬ÕâÖÖÇ¿ÒýÓ÷½Ê½¾ÍÊÇJavaÓïÑÔµÄÔ­ÉúµÄJavaÒýÓã¬ÎÒÃǼ¸ºõÿÌì±à³ÌµÄʱºò¶¼Óõ½¡£ÉϱߴúÂëJVM´æ´¢ÁËÒ»¸öStringBuilderÀàÐ͵ĶÔÏóµÄÇ¿ÒýÓÃÔÚ±äÁ¿builderÄØ¡£Ç¿ÒýÓúÍGCµÄ½»»¥ÊÇÕâÑùµÄ£¬Èç¹ûÒ»¸ö¶ÔÏóͨ¹ýÇ¿ÒýÓÿɴï»òÕßͨ¹ýÇ¿ÒýÓÃÁ´¿É´ïµÄ»°ÕâÖÖ¶ÔÏó¾Í³ÉΪǿ¿É¼°¶ÔÏó£¬ÕâÖÖÇé¿öϵĶÔÏóÀ¬»ø»ØÊÕÆ÷²»ÓèÀí²Ç¡£Èç¹ûÎÒÃÇ¿ª·¢¹ý³Ì²»ÐèÒªÀ¬»ø»ØÆ÷»ØÊոöÔÏ󣬾ÍÖ±½Ó½«¸Ã¶ÔÏó¸³ÎªÇ°ÒýÓá£

¡¡¡¡2£©Èí¿É¼°¶ÔÏó£¨softly reachable£©£º

¡¡¡¡²»Í¨¹ýÇ¿ÒýÓ÷ÃÎʵĶÔÏ󣬼´²»ÊÇÇ¿¿É¼°¶ÔÏ󣬵«ÊÇ¿ÉÒÔͨ¹ýÈíÒýÓ÷ÃÎʵĶÔÏó¾Í³ÉΪÈí¿É¼°¶ÔÏó£¬Èí¿É¼°¶ÔÏó¾ÍÐèҪʹÓÃÀàSoftReference£¨java.lang.ref.SoftReference£©¡£´ËÖÖÀàÐ͵ÄÒýÓÃÖ÷ÒªÓÃÓÚÄÚ´æ±È½ÏÃô¸ÐµÄ¸ßËÙ»º´æ£¬¶øÇÒ´ËÖÖÒýÓû¹ÊǾßÓнÏÇ¿µÄÒýÓù¦ÄÜ£¬µ±ÄÚ´æ²»¹»µÄʱºòGC»á»ØÊÕÕâÀàÄڴ棬Òò´ËÈç¹ûÄÚ´æ³ä×ãµÄʱºò£¬ÕâÖÖÒýÓÃͨ³£²»»á±»»ØÊյġ£²»½ö½öÈç´Ë£¬ÕâÖÖÒýÓöÔÏóÔÚJVMÀïÃæ±£Ö¤ÔÚÅ׳öOutOfMemoryÒ쳣֮ǰ£¬ÉèÖóÉΪnull¡£Í¨Ë׵ؽ²£¬ÕâÖÖÀàÐ͵ÄÒýÓñ£Ö¤ÔÚJVMÄÚ´æ²»×ãµÄʱºòÈ«²¿±»Çå³þ£¬µ«ÊÇÓиö¹Ø¼üÔÚÓÚ£ºÀ¬»øÊÕ¼¯Æ÷ÔÚÔËÐÐʱÊÇ·ñÊÍ·ÅÈí¿É¼°¶ÔÏóÊDz»È·¶¨µÄ£¬¶øÇÒʹÓÃÀ¬»ø»ØÊÕËã·¨²¢²»Äܱ£Ö¤Ò»´ÎÐÔÑ°ÕÒµ½ËùÓеÄÈí¿É¼°¶ÔÏó¡£µ±À¬»ø»ØÊÕÆ÷ÿ´ÎÔËÐеÄʱºò¶¼¿ÉÒÔËæÒâÊͷŲ»ÊÇÇ¿¿É¼°¶ÔÏóÕ¼ÓõÄÄڴ棬Èç¹ûÀ¬»ø»ØÊÕÆ÷ÕÒµ½ÁËÈí¿É¼°¶ÔÏó¹ýºó£¬¿ÉÄÜ»á½øÐÐÒÔϲÙ×÷¹ý³Ì£º

¡¾1¡¿½«SoftReference¶ÔÏóµÄreferentÓòÉèÖóÉΪnull£¬´Ó¶øʹ¸Ã¶ÔÏó²»ÔÙÒýÓÃheap¶ÔÏó¡£

¡¾2¡¿SoftReferenceÒýÓùýµÄÄÚ´æ¶ÑÉϵĶÔÏóÒ»Âɱ»ÉùÃ÷Ϊfinalizable¡£

¡¾3¡¿µ±ÄÚ´æ¶ÑÉϵĶÔÏófinalize()·½·¨±»ÔËÐжøÇҸöÔÏóÕ¼ÓõÄÄÚ´æ±»ÊÍ·Å£¬SoftReference¶ÔÏó¾Í»á±»Ìí¼Óµ½ËüµÄReferenceQueue£¬Ç°ÌáÌõ¼þÊÇReferenceQueue±¾ÉíÊÇ´æÔڵġ£

¡¡¡¡¼ÈÈ»JavaÀïÃæ´æÔÚÕâÑùµÄ¶ÔÏó£¬ÄÇôÎÒÃÇÔÚ±àд´úÂëµÄʱºòÈçºÎ´´½¨ÕâÑùµÄ¶ÔÏóÄØ£¿´´½¨²½ÖèÈçÏ£º

¡¡¡¡ÏÈ´´½¨Ò»¸ö¶ÔÏ󣬲¢Ê¹ÓÃÆÕͨÒýÓ÷½Ê½¡¾Ç¿ÒýÓá¿£¬È»ºóÔÙ´´½¨Ò»¸öSoftReferenceÀ´ÒýÓøöÔÏó£¬×îºó½«ÆÕͨÒýÓÃÉèÖÃΪnull£¬Í¨¹ýÕâÑùµÄ·½Ê½£¬Õâ¸ö¶ÔÏó¾Í½ö½ö±£ÁôÁËÒ»¸öSoftReferenceÒýÓã¬Í¬Ê±ÕâÖÖÇé¿öÎÒÃÇËù´´½¨µÄ¶ÔÏó¾ÍÊÇSoftReference¶ÔÏó¡£Ò»°ãÇé¿öÏ£¬ÎÒÃÇ¿ÉÒÔʹÓøÃÒýÓÃÀ´Íê³ÉCache¹¦ÄÜ£¬¾ÍÊÇÇ°±ß˵µÄÓÃÓÚ¸ßËÙ»º´æ£¬±£Ö¤×î´óÏÞ¶ÈʹÓÃÄÚ´æ¶ø²»»áÒýÆðÄÚ´æй©µÄÇé¿ö¡£Ï±ߵĴúÂë¶Î£º

public static void main(String args[]) {
¡¡¡¡¡¡//´´½¨Ò»¸öÇ¿¿É¼°¶ÔÏó
¡¡¡¡¡¡A a = new A();
¡¡¡¡¡¡//´´½¨Õâ¸ö¶ÔÏóµÄÈíÒýÓÃSoftReference
¡¡¡¡¡¡SoftReference sr = new SoftReference(a);
¡¡¡¡¡¡//½«Ç¿ÒýÓÃÉèÖÃΪ¿Õ£¬ÒÔ±éÀ¬»ø»ØÊÕÆ÷»ØÊÕÇ¿ÒýÓÃ
¡¡¡¡¡¡a = null;
¡¡¡¡¡¡//Ï´ÎʹÓøöÔÏóµÄ²Ù×÷
¡¡¡¡¡¡if( sr != null ){
¡¡¡¡¡¡¡¡¡¡a = (A)sr.get();
¡¡¡¡¡¡}else{
¡¡¡¡¡¡¡¡¡¡//ÕâÖÖÇé¿ö¾ÍÊÇÓÉÓÚÄÚ´æ¹ýµÍ£¬ÒѾ­½«ÈíÒýÓÃÊÍ·ÅÁË£¬Òò´ËÐèÒªÖØÐÂ×°ÔØÒ»´Î
¡¡¡¡¡¡¡¡¡¡a = new A();
¡¡¡¡¡¡¡¡¡¡sr = new SoftReference(a);
¡¡¡¡¡¡}
¡¡}
public static void main(String args[]) {
¡¡¡¡¡¡//´´½¨Ò»¸öÇ¿¿É¼°¶ÔÏó
¡¡¡¡¡¡A a = new A();
¡¡¡¡¡¡//´´½¨Õâ¸ö¶ÔÏóµÄÈíÒýÓÃSoftReference
¡¡¡¡¡¡SoftReference sr = new SoftReference(a);
¡¡¡¡¡¡//½«Ç¿ÒýÓÃÉèÖÃΪ¿Õ£¬ÒÔ±éÀ¬»ø»ØÊÕÆ÷»ØÊÕÇ¿ÒýÓÃ
¡¡¡¡¡¡a = null;
¡¡¡¡¡¡//Ï´ÎʹÓøöÔÏóµÄ²Ù×÷
¡¡¡¡¡¡if( sr != null ){
¡¡¡¡¡¡¡¡¡¡a = (A)sr.get();
¡¡¡¡¡¡}else{
¡¡¡¡¡¡¡¡¡¡//ÕâÖÖÇé¿ö¾ÍÊÇÓÉÓÚÄÚ´æ¹ýµÍ£¬ÒѾ­½«ÈíÒýÓÃÊÍ·ÅÁË£¬Òò´ËÐèÒªÖØÐÂ×°ÔØÒ»´Î
¡¡¡¡¡¡¡¡¡¡a = new A();
¡¡¡¡¡¡¡¡¡¡sr = new SoftReference(a);
¡¡¡¡¡¡}
¡¡}
¡¡¡¡ÈíÒýÓü¼ÊõʹµÃJavaϵͳ¿ÉÒÔ¸üºÃµØ¹ÜÀíÄڴ棬±£³ÖϵͳÎȶ¨£¬·ÀÖ¹ÄÚ´æй©£¬±ÜÃâϵͳ±ÀÀ££¬Òò´ËÔÚ´¦ÀíһЩÄÚ´æÕ¼Óôó¶øÇÒÉúÃüÖÜÆÚ³¤Ê¹Óò»Æµ·±µÄ¶ÔÏó¿ÉÒÔʹÓøü¼Êõ¡£

¡¡¡¡3)Èõ¿É¼°¶ÔÏó£¨weakly reachable£©£º

¡¡¡¡½ö½öͨ¹ýÈõÒýÓÃWeakReference£¨java.lang.ref.WeakReference£©·ÃÎʵĶÔÏó£¬ÕâÖÖ¶ÔÏóµÄÓÃ;ÔÚÓڹ淶»¯Ó³É䣨canonicalized mapping£©£¬¶ÔÓÚÉú´æÖÜÆÚÏà¶Ô±È½Ï³¤¶øÇÒÖØд´½¨µÄʱºò¿ªÏúÉٵĶÔÏó£¬ÈõÒýÓÃÒ²±È½ÏÓÐÓ㬺ÍÈíÒýÓöÔÏó²»Í¬µÄÊÇ£¬À¬»ø»ØÊÕÆ÷Èç¹ûÅöµ½ÁËÈõ¿É¼°¶ÔÏ󣬽«ÊÍ·ÅWeakReference¶ÔÏóµÄÄڴ棬µ«ÊÇÀ¬»ø»ØÊÕÆ÷ÐèÒªÔËÐкܶà´Î²ÅÄܹ»ÕÒµ½Èõ¿É¼°¶ÔÏó¡£ÈõÒýÓöÔÏóÔÚʹÓõÄʱºò£¬¿ÉÒÔÅäºÏReferenceQueueÀàʹÓã¬Èç¹ûÈõÒýÓñ»»ØÊÕ£¬JVM¾Í»á°ÑÕâ¸öÈõÒýÓüÓÈëµ½Ïà¹ØµÄÒýÓöÓÁÐÖÐÈ¥¡£×î¼òµ¥µÄÈõÒýÓ÷½·¨ÈçÒÔÏ´úÂ룺
¡¡¡¡
1
WeakReference weakWidget = new WeakReference(classA);

¡¡¡¡ÔÚÉϱߴúÂëÀïÃ棬µ±ÎÒÃÇʹÓÃweakWidget.get()À´»ñÈ¡classAµÄʱºò£¬ÓÉÓÚÈõÒýÓñ¾ÉíÊÇÎÞ·¨×èÖ¹À¬»ø»ØÊյģ¬ËùÒÔÎÒÃÇÒ²Ðí»áÄõ½Ò»¸önullΪ·µ»Ø¡£¡¾*£ºÕâÀïÌṩһ¸öС¼¼ÇÉ£¬Èç¹ûÎÒÃÇÏ£ÍûÈ¡µÃij¸ö¶ÔÏóµÄÐÅÏ¢£¬µ«ÊÇÓÖ²»Ó°Ïì¸Ã¶ÔÏóµÄÀ¬»ø»ØÊÕ¹ý³Ì£¬ÎÒÃǾͿÉÒÔʹÓÃWeakReferenceÀ´¼Çס¸Ã¶ÔÏó£¬Ò»°ãÎÒÃÇÔÚ¿ª·¢µ÷ÊÔÆ÷ºÍÓÅ»¯Æ÷µÄʱºòʹÓÃÕâ¸öÊǺܺõÄÒ»¸öÊֶΡ£¡¿

¡¡¡¡Èç¹ûÉϱߵĴúÂ벿·Ö£¬ÎÒÃÇͨ¹ýweakWidget.get()·µ»ØµÄÊÇnull¾ÍÖ¤Ã÷¸Ã¶ÔÏóÒѾ­±»À¬»ø»ØÊÕÆ÷»ØÊÕÁË£¬¶øÕâÖÖÇé¿öÏÂÈõÒýÓöÔÏó¾ÍʧȥÁËʹÓüÛÖµ£¬GC¾Í»á¶¨ÒåΪÐèÒª½øÐÐÇå³ý¹¤×÷¡£ÕâÖÖÇé¿öÏÂÈõÒýÓÃÎÞ·¨ÒýÓÃÈκζÔÏó£¬ËùÒÔÔÚJVMÀïÃæ¾Í³ÉΪÁËÒ»¸öËÀÒýÓã¬Õâ¾ÍÊÇΪʲôÎÒÃÇÓÐʱºòÐèҪͨ¹ýReferenceQueueÀàÀ´ÅäºÏʹÓõÄÔ­Òò£¬Ê¹ÓÃÁËReferenceQueue¹ýºó£¬¾ÍʹµÃÎÒÃǸü¼ÓÈÝÒ×¼àÊÓ¸ÃÒýÓõĶÔÏó£¬Èç¹ûÎÒÃÇͨ¹ýÒ»ReferenceQueueÀàÀ´¹¹ÔìÒ»¸öÈõÒýÓ㬵±ÈõÒýÓõĶÔÏóÒѾ­±»»ØÊÕµÄʱºò£¬ÏµÍ³½«×Ô¶¯Ê¹ÓöÔÏóÒýÓöÓÁÐÀ´´úÌæ¶ÔÏóÒýÓ㬶øÇÒÎÒÃÇ¿ÉÒÔͨ¹ýReferenceQueueÀàµÄÔËÐÐÀ´¾ö¶¨ÊÇ·ñÕæÕýÒª´ÓÀ¬»ø»ØÊÕÆ÷ÀïÃ潫¸ÃËÀÒýÓã¨Dead Reference£©Çå³ý¡£
¡¡¡¡ÈõÒýÓôúÂë¶Î£º

//´´½¨ÆÕͨÒýÓöÔÏó
¡¡¡¡MyObject object = new MyObject();
¡¡¡¡//´´½¨Ò»¸öÒýÓöÓÁÐ
¡¡¡¡ReferenceQueue rq = new ReferenceQueue();
¡¡¡¡//ʹÓÃÒýÓöÓÁд´½¨MyObjectµÄÈõÒýÓÃ
¡¡¡¡WeakReference wr = new WeakReference(object,rq);
//´´½¨ÆÕͨÒýÓöÔÏó
¡¡¡¡MyObject object = new MyObject();
¡¡¡¡//´´½¨Ò»¸öÒýÓöÓÁÐ
¡¡¡¡ReferenceQueue rq = new ReferenceQueue();
¡¡¡¡//ʹÓÃÒýÓöÓÁд´½¨MyObjectµÄÈõÒýÓÃ
¡¡¡¡WeakReference wr = new WeakReference(object,rq);
¡¡¡¡ÕâÀïÌṩÁ½¸öʵÔڵij¡¾°À´ÃèÊöÈõÒýÓõÄÏà¹ØÓ÷¨£º

¡¡¡¡£¨1£©ÄãÏë¸ø¶ÔÏ󸽼ÓһЩÐÅÏ¢£¬ÓÚÊÇÄãÓÃÒ»¸ö Hashtable °Ñ¶ÔÏóºÍ¸½¼ÓÐÅÏ¢¹ØÁªÆðÀ´¡£Ä㲻ͣµÄ°Ñ¶ÔÏóºÍ¸½¼ÓÐÅÏ¢·ÅÈë Hashtable ÖУ¬µ«Êǵ±¶ÔÏóÓÃÍêµÄʱºò£¬Äã²»µÃ²»°Ñ¶ÔÏóÔÙ´Ó Hashtable ÖÐÒƳý£¬·ñÔòËüÕ¼ÓõÄÄÚ´æ±ä²»»áÊÍ·Å¡£ÍòÒ»ÄãÍü¼ÇÁË£¬ÄÇôûÓÐ´Ó Hashtable ÖÐÒƳýµÄ¶ÔÏóÒ²¿ÉÒÔËã×÷ÊÇÄÚ´æй©¡£ÀíÏëµÄ×´¿öÓ¦¸ÃÊǵ±¶ÔÏóÓÃÍêʱ£¬Hashtable ÖеĶÔÏó»á×Ô¶¯±»À¬»øÊÕ¼¯Æ÷»ØÊÕ£¬²»È»Äã¾ÍÊÇÔÚ×öÀ¬»ø»ØÊյŤ×÷¡£

¡¡¡¡£¨2£©ÄãÏëʵÏÖÒ»¸öͼƬ»º´æ£¬ÒòΪ¼ÓÔØͼƬµÄ¿ªÏú±È½Ï´ó¡£Ä㽫ͼƬ¶ÔÏóµÄÒýÓ÷ÅÈëÕâ¸ö»º´æ£¬ÒÔ±ãÒÔºóÄܹ»ÖØÐÂʹÓÃÕâ¸ö¶ÔÏó¡£µ«ÊÇÄã±ØÐë¾ö¶¨»º´æÖеÄÄÄЩͼƬ²»ÔÙÐèÒªÁË£¬´Ó¶ø½«ÒýÓôӻº´æÖÐÒƳý¡£²»¹ÜÄãʹÓÃʲô¹ÜÀí»º´æµÄËã·¨£¬Äãʵ¼ÊÉ϶¼ÔÚ´¦ÀíÀ¬»øÊÕ¼¯µÄ¹¤×÷£¬¸ü¼òµ¥µÄ°ì·¨£¨³ý·ÇÄãÓÐÌØÊâµÄÐèÇó£¬ÕâÒ²Ó¦¸ÃÊÇ×îºÃµÄ°ì·¨£©ÊÇÈÃÀ¬»øÊÕ¼¯Æ÷À´´¦Àí£¬ÓÉËüÀ´¾ö¶¨»ØÊÕÄĸö¶ÔÏó¡£

¡¡¡¡µ±Java»ØÊÕÆ÷Óöµ½ÁËÈõÒýÓõÄʱºòÓпÉÄÜ»áÖ´ÐÐÒÔϲÙ×÷£º

¡¾1¡¿½«WeakReference¶ÔÏóµÄreferentÓòÉèÖóÉΪnull£¬´Ó¶øʹ¸Ã¶ÔÏó²»ÔÙÒýÓÃheap¶ÔÏó¡£

¡¾2¡¿WeakReferenceÒýÓùýµÄÄÚ´æ¶ÑÉϵĶÔÏóÒ»Âɱ»ÉúÃüΪfinalizable¡£

¡¾3¡¿µ±ÄÚ´æ¶ÑÉϵĶÔÏófinalize()·½·¨±»ÔËÐжøÇҸöÔÏóÕ¼ÓõÄÄÚ´æ±»ÊÍ·Å£¬WeakReference¶ÔÏó¾Í»á±»Ìí¼Óµ½ËüµÄReferenceQueue£¬Ç°ÌáÌõ¼þÊÇReferenceQueue±¾ÉíÊÇ´æÔڵġ£

¡¡¡¡4)Çå³ý£º

¡¡¡¡µ±ÒýÓöÔÏóµÄreferentÓòÉèÖÃΪnull£¬²¢ÇÒÒýÓÃÀàÔÚÄÚ´æ¶ÑÖÐÒýÓõĶÔÏóÉùÃ÷Ϊ¿É½áÊøµÄʱºò£¬¸Ã¶ÔÏó¾Í¿ÉÒÔÇå³ý£¬Çå³ý²»×ö¹ý¶àµÄ½²Êö

¡¡¡¡5)Ðé¿É¼°¶ÔÏó£¨phantomly reachable£©£º

¡¡¡¡°ÑÐé¿É¼°¶ÔÏó·Åµ½×îºóÀ´½²£¬Ö÷ÒªÒ²ÊÇÒòΪËüµÄÌØÊâÐÔ£¬ÓÐʱºòÎÒÃÇÓÖ³Æ֮Ϊ¡°ÓÄÁé¶ÔÏó¡±£¬ÒѾ­½áÊøµÄ£¬¿ÉÒÔͨ¹ýÐéÒýÓÃÀ´·ÃÎʸöÔÏó¡£ÎÒÃÇʹÓÃÀàPhantomReferenceÀ´·ÃÎÊ£¬Õâ¸öÀàÖ»ÄÜÓÃÓÚ¸ú×Ù±»ÒýÓöÔÏó½øÐеÄÊÕ¼¯£¬Í¬ÑùµÄ£¬¿ÉÒÔÓÃÓÚÖ´ÐÐper-morternÇå³ý²Ù×÷¡£PhantomReference±ØÐëÓëReferenceQueueÀàÒ»ÆðʹÓá£ÐèҪʹÓÃReferenceQueueÊÇÒòΪËüÄܹ»³äµ±Í¨Öª»úÖÆ£¬µ±À¬»øÊÕ¼¯Æ÷È·¶¨ÁËij¸ö¶ÔÏóÊÇÐé¿É¼°¶ÔÏóµÄʱºò£¬PhantomReference¶ÔÏó¾Í±»·ÅÔÚÁËËüµÄReferenceQueueÉÏ£¬Õâ¾ÍÊÇÒ»¸ö֪ͨ£¬±íÃ÷PhantomReferenceÒýÓõĶÔÏóÒѾ­½áÊø£¬¿ÉÒÔÊÕ¼¯ÁË£¬Ò»°ãÇé¿öÏÂÎÒÃǸպÃÔÚ¶ÔÏóÄÚ´æÔÚ»ØÊÕ֮ǰ²ÉÈ¡¸ÃÐÐΪ¡£ÕâÖÖÒýÓò»Í¬ÓÚÈõÒýÓúÍÈíÒýÓã¬ÕâÖÖ·½Ê½Í¨¹ýget()»ñÈ¡µ½µÄ¶ÔÏó×ÜÊÇ·µ»Ønull£¬½ö½öµ±ÕâЩ¶ÔÏóÔÚReferenceQueue¶ÓÁÐÀïÃæµÄʱºò£¬ÎÒÃÇ¿ÉÒÔÖªµÀËüËùÒýÓõÄÄÄЩ¶Ô¶ÔÏóÊÇËÀÒýÓã¨Dead Reference£©¡£¶øÕâÖÖÒýÓúÍÈõÒýÓõÄÇø±ðÔÚÓÚ£º

¡¡¡¡ÈõÒýÓã¨WeakReference£©ÊÇÔÚ¶ÔÏ󲻿ɴïµÄʱºò¾¡¿ì½øÈëReferenceQueue¶ÓÁеģ¬ÔÚfinalization·½·¨Ö´ÐкÍÀ¬»ø»ØÊÕ֮ǰÊÇȷʵ»á·¢ÉúµÄ£¬ÀíÂÛÉÏÕâÀà¶ÔÏóÊDz»ÕýÈ·µÄ¶ÔÏ󣬵«ÊÇWeakReference¶ÔÏó¿ÉÒÔ¼ÌÐø±£³ÖDead״̬£¬

¡¡¡¡ÐéÒýÓã¨PhantomReference£©ÊÇÔÚ¶ÔÏóȷʵÒѾ­´ÓÎïÀíÄÚ´æÖÐÒƳý¹ýºó²Å½øÈëµÄReferenceQueue¶ÓÁУ¬¶øÇÒget()·½·¨»áÒ»Ö±·µ»Ønull

¡¡¡¡µ±À¬»ø»ØÊÕÆ÷Óöµ½ÁËÐéÒýÓõÄʱºò½«ÓпÉÄÜÖ´ÐÐÒÔϲÙ×÷£º

¡¾1¡¿PhantomReferenceÒýÓùýµÄheap¶ÔÏóÉùÃ÷Ϊfinalizable£»

¡¾2¡¿ÐéÒýÓÃÔڶѶÔÏóÊÍ·Å֮ǰ¾ÍÌí¼Óµ½ÁËËüµÄReferenceQueueÀïÃ棬ÕâÖÖÇé¿öʹµÃÎÒÃÇ¿ÉÒÔÔڶѶÔÏó±»»ØÊÕ֮ǰ²ÉÈ¡²Ù×÷£¨*£ºÔÙ´ÎÌáÐÑ£¬PhantomReference¶ÔÏó±ØÐë¾­¹ý¹ØÁªµÄReferenceQueueÀ´´´½¨£¬¾ÍÊÇ˵±ØÐëºÍReferenceQueueÀàÅäºÏ²Ù×÷£©

¡¡¡¡¿´ËÆûÓÐÓô¦µÄÐéÒýÓã¬ÓÐʲôÓÃ;ÄØ£¿

1.Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÐéÒýÓÃÖªµÀ¶ÔÏ󾿾¹Ê²Ã´Ê±ºòÕæÕý´ÓÄÚ´æÀïÃæÒƳýµÄ£¬¶øÇÒÕâÒ²ÊÇΨһµÄ;¾¶¡£

2.ÐéÒýÓñܹýÁËfinalize()·½·¨£¬ÒòΪ¶ÔÓÚ´Ë·½·¨µÄÖ´ÐжøÑÔ£¬ÐéÒýÓÃÕæÕýÒýÓõ½µÄ¶ÔÏóÊÇÒì³£¶ÔÏó£¬ÈôÔڸ÷½·¨ÄÚҪʹÓöÔÏóÖ»ÄÜÖؽ¨¡£Ò»°ãÇé¿öÀ¬»ø»ØÊÕÆ÷»áÂÖѯÁ½´Î£¬Ò»´Î±ê¼ÇΪfinalization£¬µÚ¶þ´Î½øÐÐÕæʵµÄ»ØÊÕ£¬¶øÍùÍù±ê¼Ç¹¤×÷²»ÄÜʵʱ½øÐУ¬»òÕßÀ¬»ø»ØÊÕÆä»áµÈ´ýÒ»¸ö¶ÔÏóÈ¥±ê¼Çfinalization¡£ÕâÖÖÇé¿öºÜÓпÉÄÜÒýÆðMemoryOut£¬¶øʹÓÃÐéÒýÓÃÕâÖÖÇé¿ö¾Í»áÍêÈ«±ÜÃâ¡£ÒòΪÐéÒýÓÃÔÚÒýÓöÔÏóµÄ¹ý³Ì²»»áȥʹµÃÕâ¸ö¶ÔÏóÓÉDead¸´»î£¬¶øÇÒÕâÖÖ¶ÔÏóÊÇ¿ÉÒÔÔÚ»ØÊÕÖÜÆÚ½øÐлØÊյġ£

¡¡¡¡ÔÚJVMÄÚ²¿£¬ÐéÒýÓñÈÆðʹÓÃfinalize()·½·¨¸ü¼Ó°²È«Ò»µã¶øÇÒ¸ü¼ÓÓÐЧ¡£¶øfinaliaze()·½·¨»ØÊÕÔÚÐéÄâ»úÀïÃæʵÏÖÆðÀ´Ïà¶Ô¼òµ¥£¬¶øÇÒÒ²¿ÉÒÔ´¦Àí´ó²¿·Ö¹¤×÷£¬ËùÒÔÎÒÃÇÈÔȻʹÓÃÕâÖÖ·½Ê½À´½øÐжÔÏó»ØÊÕµÄɨβ²Ù×÷£¬µ«ÊÇÓÐÁËÐéÒýÓùýºóÎÒÃÇ¿ÉÒÔÑ¡ÔñÊÇ·ñÊÖ¶¯²Ù×÷¸Ã¶ÔÏóʹµÃ³ÌÐò¸ü¼Ó¸ßЧÍêÃÀ¡£

3.JavaÀïÃæ¶ÔÏóµÄÉúÃüÖÜÆÚ

¡¡¡¡ÔÚJVMÔËÐпռäÀïÃ棬¶ÔÏóÕû¸öÉùÃ÷ÖÜÆÚ´óÖ·ÖΪÒÔϼ¸¸ö½×¶Î£º

¡¡¡¡´´½¨½×¶Î£¨Creating£©->Ó¦Óý׶Σ¨Using£©->²»¿ÉÊӽ׶Σ¨Invisible£©->²»¿É´ï½×¶Î£¨Unreachable£©->¿ÉÊÕ¼¯½×¶Î£¨Collected£©->ÖÕ½á½×¶Î£¨Finalized£©->ÊͷŽ׶Σ¨Free£©

¡¡¡¡¡¾1¡¿´´½¨½×¶Î£º

¡¡¡¡´´½¨¹ý³ÌÐèÒª¾­¹ýÆäÖм¸²½£º

¡¡¡¡1.Ϊ¶ÔÏó·ÖÅäÄÚ´æ¿Õ¼ä

¡¡¡¡2.¿ªÊ¼¹¹Ôì¶ÔÏó

¡¡¡¡3.µÝ¹éµ÷Óó¬ÀàµÄ¹¹Ôì·½·¨

¡¡¡¡4.½øÐжÔÏóʵÀý³õʼ»¯ºÍ±äÁ¿³õʼ»¯

¡¡¡¡5.Ö´Ðй¹Ôì·½·¨Ìå

¡¡¡¡¡¾2¡¿Ó¦Óý׶ÎÌØÕ÷£º

¡¡¡¡ÏµÍ³ÖÁÉÙά»¤×ŶÔÏóµÄÒ»¸öÇ¿ÒýÓã¨Strong Reference£©

¡¡¡¡ËùÓиöÔÏóµÄÒýÓÃÈ«²¿ÊÇÇ¿ÒýÓ㬳ý·ÇÎÒÃÇÏÔʾÉùÃ÷ÁËÈíÒýÓá¢ÈõÒýÓûòÕßÐéÒýÓÃ

¡¡¡¡¡¾3¡¿²»¿ÉÊÇÊӽ׶Σº

¡¡¡¡²»¿ÉÊӽ׶ξÍÊÇÎÒÃÇÔÚÇøÓò´úÂëÖв»¿ÉÒÔÔÙÒýÓÃËü£¬¾ÍÊÇÇ¿ÒýÓÃÒѾ­Ïûʧ£¬Ò»°ãÇé¿öÎÒÃÇ°ÑÕâ¸öʱºòµÄ¶ÔÏóÉèÖÃΪnull£¬ÆäÖ÷ҪĿµÄÊÇÈÃJVM·¢ÏÖËü£¬²¢ÇÒ¿ÉÒÔ¼°Ê±»ØÊոöÔÏóËùÕ¼ÓÃ×ÊÔ´

¡¡¡¡¡¾4¡¿²»¿Éµ½´ï½×¶Î£º

¡¡¡¡²»¿É´ï½×¶ÎµÄ¶ÔÏó£¬ÔÚÐéÄâ»úËù¹ÜÀíµÄ¶ÔÏóÒýÓøù¼¯ºÏÖÐÔÙÒ²ÕÒ²»µ½Ö±½Ó»ò¼ä½ÓµÄÇ¿ÒýÓã¬ÕâЩ¶ÔÏóͨ³£ÊÇÖ¸ËùÓÐÏß³ÌÕ»ÖеÄÁÙʱ±äÁ¿ÒÔ¼°Ïà¹ØÒýÓã¬ÕâÖÖ¶ÔÏó¶¼ÊÇÒªÔ¤±¸»ØÊյĶÔÏ󣬵«ÊÇÕâʱºò²»Äܱ»GCÖ±½Ó»ØÊÕ¡£

¡¡¡¡¡¾5¡¿¿ÉÊÕ¼¯½×¶Î¡¢ÖÕ½á½×¶Î¡¢ÊͷŽ׶Σº

¡¡¡¡¶ÔÏóÉúÃüÖÜÆÚ×îºóÒ»¸ö½×¶Î£¬ÕâÖֽ׶εĶÔÏó¿ÉÄÜ´¦ÓÚÈýÖÖ״̬£º

¡¡¡¡1.À¬»ø»ØÊÕÆ÷·¢ÏÖ¶ÔÏóÒѾ­²»¿É´ï

¡¡¡¡2.finalize·½·¨ÒѾ­±»Ö´ÐÐ

   3.¶ÔÏóÒѾ­±»ÖØÓÃ

ÉÏһƪ£ºQlogicÖúIBM System x·þÎñÆ÷ÌáÉýÐéÄ⻯¹¦ÄÜ
ÏÂһƪ£ºAIX·þÎñÆ÷ϵͳÃüÁî¼ò½é
·µ»ØÊ×Ò³ | ÁªÏµÎÒÃÇ | ¹ØÓÚÎÒÃÇ | ÕÐƸÐÅÏ¢ | ÓÑÇéÁ´½Ó | ÍøÕ¾µØͼ | ºÏ×÷»ï°é
°æȨËùÓÐ ±±¾©±±ÑÇå·ÐǿƼ¼ÓÐÏÞ¹«Ë¾
È«¹úͳһ¿Í·þÈÈÏߣº4006-505-646
±±¾©×ܲ¿£º±±¾©Êк£µíÇøÓÀ·á»ùµØ·á»ÛÖз7ºÅвÄÁÏ´´Òµ´óÏÃB×ù205ÊÒ
¾©ICP±¸09039053ºÅ

SÃÒ