ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

ʲôÊÇjavaËÄ´óÒýÓÃ?JavaÒýÓýéÉÜ[javaÅàѵ]

¸üÐÂʱ¼ä:2020Äê03ÔÂ14ÈÕ21ʱ39·Ö À´Ô´:ÀÖÓã²¥¿Í ä¯ÀÀ´ÎÊý:

ʲôÊÇjavaËÄ´óÒýÓÃ?

ÊÇJDK1.2°æ±¾¿ªÊ¼ÒýÈ룬°Ñ¶ÔÏóµÄÒýÓ÷ÖΪ4¸öµÈ¼¶£¬ÎÒÃÇÆ½Ê±Ñ§Ï°µÄ¾ÍÊÇËÄÖֵĵÚÒ»¼¶µÄÇ¿ÒýÓã¬Ëµ°×ÁË£¬¾ÍObject o = new Object()£¬ËĸöÒýÓ÷ֱðÊÇÇ¿ÒýÓá¢ÈíÒýÓá¢ÈõÒýÓúÍÐéÒýÓã¬Çë¼ÇסËüÃǵÄ˳Ðò!ÒòΪÕâÊÇËüÃǶÔÄÚ´æµÄÃô¸Ð³Ì¶È!

µÈ¼¶£º Ç¿ > Èí > Èõ > Ðé

javaÖеÄÒýÓÃ


ËüÃÇÓÐʲô×÷ÓÃ?

·Áé»îµÄ¿ØÖƶÔÏóµÄÉúÃüÖÜÆÚ

·Ìá¸ß¶ÔÏóµÄ»ØÊÕ»úÂÊ

ÀíÂÛ¼Ó´úÂë·ÖÎö:

1¡¢Ê²Ã´ÊÇÇ¿ÒýÓÃ

Ç¿ÒýÓþÍÊÇÎÒÃÇÆ½Ê±Ê¹ÓõĶÔÏó·½Ê½£¬Ò²ÊÇʹÓÃ×î¶àµÄÒ»ÖÖ·½Ê½£¬Çë¼Çס²»¹ÜÄÚ´æ½ôÕÅÒ²°Õ£¬²»×ãÒ²°Õ£¬gcÓÀ²»»ØÊÕÇ¿ÒýÓõĶÔÏó£¬ ¼´Ê¹jvm ³öÏÖ(ÄÚ´æÒç³ö´íÎó)OutOfMemoryError£¬Ê¹³ÌÐòÍ£Ö¹£¬Ò²²»»á»ØÊÕ¶ÔÏóÀ´Ìá¸ßÄÚ´æ

´úÂë

public class StrongReferenceDemo {
    public static void main(String[] args) {
        Integer data = new Integer(4);
        String str = "123";
        Student student = new Student();
        //ÒÔÉÏÈý¸ö¶ÔÏó¶¼ÊÇÇ¿ÒýÓöÔÏó£¬Ö¸ÎÒÃÇÆ½Ê±Ê¹ÓõĶÔÏó·½Ê½
    }
}
class Student {
}

2. ʲôÊÇÈíÒýÓÃ
¶ÔÏó¾ß±¸ÈíÒýÓã¬Çë¼Çס£¬Ö»ÒªÄÚ´æ×ã¹»£¬ÎÒÃDz»¶Ô¶ÔÏó»ØÊÕ£¬µ«Êǵ±ÄÚ´æ²»×㣬gc¶ÔÈíÒýÓöÔÏó½øÐлØÊÕ¿ÉÒÔ¿´³öÈíÒýÓöÔÄÚ´æºÜÃô¸Ð£¬¿ÉÓÃÀ´¸ßËÙ»º´æ£¬Í¬Ê±Ëü¿ÉÒÔ½áºÏ¶ÓÁÐʹÓã¬Èç¹ûÈíÒýÓñ»gc»ØÊÕ£¬jvm¾Í»á°ÑÈíÒýÓüÓÈëµ½¶ÓÁÐÖС£

´úÂë


public class Demo {
    public static void main(String[] args) {
        String ss = "hello";
        //Õâʱ"hello"ÓÐÒ»¸öÇ¿ÒýÓ㬠»¹ÓÐÒ»¸öÈíÒýÓÃ
        //·ºÐÍÖ¸µÄÊÇÈíÒýÓÃÖ¸ÏòµÄÀàÐÍ
        //ÈíÒýÓÃÊÇÄÚ´æ²»×ãʱ£¬¶ÔÏó±»»ØÊÕ
        SoftReference<String> soft = new SoftReference<String>(ss);
        //»ñÈ¡ÈíÒýÓõĶÔÏó
        String content = soft.get();
        System.out.println(content);
        ss = null; //Ç¿ÒýÓÃûÓÐÁË£¬ÕâʱֻÓÐÈíÒýÓÃÖ¸Ïò"hello"
        System.gc(); //Ç¿ÖÆ»ØÊÕ
        System.gc();
        System.gc();
        content = soft.get();//¿´¿´ÓÐûÓб»»ØÊÕ
    }


3.ʲôÊÇÈõÒýÓÃ?

gc²»ÄÚ´æÊÇ·¢ÏÖÈõÒýÓ㬾ͻáÁ¢¿Ì»ØÊÕÈõÒýÓöÔÏ󣬵«ÊÇÎÒÃÇÖªµÀgcÊÇÒ»¸öÓÅÏȼ¶ºÜµÍµÄỊ̈߳¬ËùÒÔ²»Ò»¶¨Á¢¿Ì·¢ÏÖ²¢»ØÊÕÈõÒýÓöÔÏ󣬵«¼Çס£¬Ö»Òª±»gc·¢ÏÖÈõÒýÓ㬲»¹ÜÄÚ´æ¹»²»¹»£¬Ö±½Ó»ØÊÕ£¬Í¬Ê±£¬ÈõÒýÓã¬Ò²¿ÉÒÔ½áºÏ¶ÓÁÐʹÓ㬵±±»»ØÊÕ£¬¾Í½øÈ¥ÓÚÖ®¹ØÁªµÄ¶ÓÁÐÖС£

´úÂë

public class WeakReference {
    public static void main(String[] args) {
        String ss = "hello";
        ReferenceQueue<String> queue = new ReferenceQueue<>();
        java.lang.ref.WeakReference<String> weak = new
        java.lang.ref.WeakReference<String>(ss,queue);
        System.out.println("ÏÖÔÚµÄÒýÓà " + weak.get());
        ss = null;
        System.gc();    //gc
        Reference<? extends String> poll = queue.poll();    //Èç¹ûnull£¬ËµÃ÷±»»ØÊÕÁË
        
        if(poll != null) {
            String content = poll.get();
            System.out.println(content);
        }    //¿´¿´ÓÐûÓб»»ØÊÕ
    }
}


4.ʲôÊÇÐéÒýÓÃ?

ÐéÒýÓúÍÇ°ÃæµÄÈíÒýÓá¢ÈõÒýÓò»Í¬£¬Ëü²¢²»Ó°Ïì¶ÔÏóµÄÉúÃüÖÜÆÚ¡£ÔÚjavaÖÐÓÃjava.lang.ref.PhantomReferenceÀà±íʾ¡£Èç¹ûÒ»¸ö¶ÔÏóÓëÐéÒýÓùØÁª£¬Ôò¸úûÓÐÒýÓÃÓëÖ®¹ØÁªÒ»Ñù£¬ÔÚÈκÎʱºò¶¼¿ÉÄܱ»À¬»ø»ØÊÕÆ÷»ØÊÕ¡£

ҪעÒâµÄÊÇ£¬ÐéÒýÓñØÐëºÍÒýÓöÓÁйØÁªÊ¹Ó㬵±À¬»ø»ØÊÕÆ÷×¼±¸»ØÊÕÒ»¸ö¶ÔÏóʱ£¬Èç¹û·¢ÏÖËü»¹ÓÐÐéÒýÓ㬾ͻá°ÑÕâ¸öÐéÒýÓüÓÈëµ½ÓëÖ® ¹ØÁªµÄÒýÓöÓÁÐÖС£³ÌÐò¿ÉÒÔͨ¹ýÅжÏÒýÓöÓÁÐÖÐÊÇ·ñÒѾ­¼ÓÈëÁËÐéÒýÓã¬À´Á˽ⱻÒýÓõĶÔÏóÊÇ·ñ½«Òª±»À¬»ø»ØÊÕ¡£Èç¹û³ÌÐò·¢ÏÖij¸öÐéÒýÓÃÒѾ­±»¼ÓÈëµ½ÒýÓöÓÁУ¬ÄÇô¾Í¿ÉÒÔÔÚËùÒýÓõĶÔÏóµÄÄÚ´æ±»»ØÊÕ֮ǰ²ÉÈ¡±ØÒªµÄÐж¯¡£

import java.lang.ref.PhantomReference;
    import java.lang.ref.ReferenceQueue;
    public class Main {
        public static void main(String[] args) {
        ReferenceQueue<String> queue = new ReferenceQueue<String>();
        PhantomReference<String> pr = new PhantomReference<String>(newString("hello"), queue);
        System.out.println(pr.get());
       }
    }

²ÂÄãϲ»¶
ÀÖÓã²¥¿ÍJavaÅàѵ¿Î³Ì

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿